DataFrame多重索引
1、根据多重索引创建DataFrame
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.arange(12).reshape(6,2),index=[list('AAABBB'),list('123123')],columns=['col01','col02'])
- df
复制代码
2、多重索引设置列名称
- df.index.names = ['frist','second']
- df
复制代码
3、多重索引分组求和
- df.groupby('frist').sum()
复制代码
4、行列名称转换
5、索引转换
6、条件查找
创建数据集
- # 示例数据
- data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
- 'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
- 'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
- 'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
- labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
- df = pd.DataFrame(data, index=labels)
- df
复制代码
查找age大于3的全部信息
7、根据行列索引切片
8、多重条件查询
- df[(df['animal']=='cat')&(df['age']<3)]
复制代码
9、按关键字查询
- df[df['animal'].isin(['cat','dog'])]
复制代码
10、按标签及列名查询
- df.loc[df.index[[3,4,8]],['animal','age']]
复制代码
11、多条件排序
- # 按照 age 降序,visits 升序排列
- df.sort_values(by=['age','visits'],ascending=[False,True])
复制代码
12、多值替换
- # 将 priority 列的 yes 值替换为 True,no 值替换为 False
- df['priority'].map({'yes':'True','no':'False'})
复制代码
13、分组求和
- df.groupby('animal').sum()
复制代码
14、使用列表拼接成多个DataFrame
- temp_df1 = pd.DataFrame(np.random.randn(5, 4)) # 生成由随机数组成的 DataFrame 1
- temp_df2 = pd.DataFrame(np.random.randn(5, 4)) # 生成由随机数组成的 DataFrame 2
- temp_df3 = pd.DataFrame(np.random.randn(5, 4)) # 生成由随机数组成的 DataFrame 3
- print(temp_df1)
- print(temp_df2)
- print(temp_df3)
- pieces = [temp_df1, temp_df2, temp_df3]
- pd.concat(pieces)
复制代码
15、找出表中和最小的列
- df = pd.DataFrame(np.random.random(size=(5, 10)), columns=list('abcdefghij'))
- print(df.sum())
- df.sum().idxmin() # idxmax(), idxmin() 为 Series 函数返回最大最小值的索引值
复制代码
16、DataFrame中每个元素减去每一行的平均值
- pd.DataFrame(np.random.random(size=(5,3)))
- print(df)
- df.sub(df.mean(axis=1),axis=0)
复制代码
17、DataFrame分组,并得到每一组中最大三个数之和
- df = pd.DataFrame({'A': list('aaabbcaabcccbbc'),
- 'B': [12, 345, 3, 1, 45, 14, 4, 52, 54, 23, 235, 21, 57, 3, 87]})
- print(df)
- df.groupby('A')['B'].nlargest(3).sum(level=0)
复制代码
|