1. dataframe转列表
使用 tolist() 方法将 Dataframe 列转换为列表。Pandas DataFrame 中的一列就是一个 PandasSeries。因此,如果我们需要将一列转换为一个列表,可以使用Series中的tolist()方法。
在下面的代码中,df[‘DOB’] 从 DataFrame 中返回名称为 DOB 的 Series 或列。tolist() 方法将 Series 转换为一个列表。
import pandas as pd
df=pd.DataFrame([
['James', '1/1/2014', '1000'],
['Michelina', '2/1/2014', '12000'],
['Marc', '3/1/2014', '36000'],
['Bob', '4/1/2014', '15000'],
['Halena', '4/1/2014', '12000']
], columns=['Name', 'DOB','Salary'])
print("Pandas DataFrame:\n\n",df,"\n")
list_of_single_column = df['DOB'].tolist()
print("the list of a single column from the dataframe\n",
list_of_single_column,
"\n",
type(list_of_single_column))
2. dataframe转字符串
df['A'] = df['A'].astype(str)
3. dataframe上下拼接:axis = 0
pd.concat( objs, axis=0, join=‘outer’, join_axes=None,ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True,)
objs:需要连接的对象,比如:[df1, df2],需要将合并的数据用综括号包围;
axis=0:拼接方式是上下堆叠,当axis=1表示左右拼接;
join:参数控制的是外连接还是内连接,join='outer’表示外连接,保留两个表中的所有信息;join="inner"表示内连接,拼接结果只保留两个表共有的信息;
join_axes:参数是在内连接时选择要完整保留哪个表的索引,但是这个参数在官方文档中提醒即将被弃用。
import pandas as pd
d1 = [["xiaolei",20,10081],["xiaowu",30,10082]]
t1 = pd.DataFrame(d1)
print(t1)
print("*"*50)
d2 = [["xiaowang",22,10083],["xiaoming",25,10084]]
t2 = pd.DataFrame(d2)
print(t2)
print("*"*25+"合并结果如下(默认是上下堆叠)"+"*"*25)
t = pd.concat([t1,t2])
print(t)
>>
0 1 2
0 xiaolei 20 10081
1 xiaowu 30 10082
**************************************************
0 1 2
0 xiaowang 22 10083
1 xiaoming 25 10084
********************合并结果如下(默认是上下堆叠)********************
0 1 2
0 xiaolei 20 10081
1 xiaowu 30 10082
0 xiaowang 22 10083
1 xiaoming 25 10084
4. 左右拼接:axis=1
import pandas as pd
d1 = [["xiaolei",20,10081],["xiaowu",30,10082]]
t1 = pd.DataFrame(d1)
print(t1)
print("*"*50)
d2 = [["xiaowang",22,10083],["xiaoming",25,10084]]
t2 = pd.DataFrame(d2)
print(t2)
print("*"*20+"合并结果如下(左右拼接)"+"*"*20)
t = pd.concat([t1,t2], axis=1)
print(t)
>>
0 1 2
0 xiaolei 20 10081
1 xiaowu 30 10082
**************************************************
0 1 2
0 xiaowang 22 10083
1 xiaoming 25 10084
********************合并结果如下(左右拼接)********************
0 1 2 0 1 2
0 xiaolei 20 10081 xiaowang 22 10083
1 xiaowu 30 10082 xiaoming 25 10084
5. DataFrame的GroupBy:对二分类对象进行遍历
import pandas as pd
data = [['a', 'A', '1等', 109], ['b', 'C', '1等', 112], ['c', 'A', '1等', 125], ['d', 'B', '2等', 120],
['e', 'B', '1等', 126], ['f', 'B', '2等', 133], ['g', 'C', '2等', 124], ['h', 'A', '1等', 134],
['i', 'C', '2等', 117], ['j', 'A', '2等', 128], ['h', 'B', '1等', 130], ['i', 'C', '2等', 122]]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
columns = ['name', 'class_1', 'class_2', 'num']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("===============================")
for (key1, key2), group in df.groupby(['class_1', 'class_2']):
print(key1, key2)
print("=============================")
print(group)
print("==================================================")
6. pandas求平均
df.mean()函数默认是等价于df.mean(0),即按轴方向求平均,得到每列数据的平均值。
相反的df.mean(1)则代表按行方向求平均,得到每行数据的平均值。
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
output: