1. 指定某列数据类型
df['列名'].astype(int)
2. 获取第n行某列的值
val = df.loc[df.index[0], '列名']
3. 按筛选条件合计
# 筛选条件:列1=abc ,合计 列2 的值
df.loc[ df['列1']=='abc','列2'].sum()
# 筛选条件:列1=abc 且 列2 = 123 ,合计 列3 的值
df.loc[ (df['列1']=='abc') & (df['列2']=='123'),'列3'].sum()
# 筛选条件:列1=abc 且 列2 包含市 ,合计 列3 的值
df.loc[ (df['列1']=='abc') & (df['列2'].str.contains('市'))'列3'].sum()
4. dataframe 追加、合并
# 在 df_01 后面追加 df_02 的数据,前提是两个 df 结构完全一致
df_01 = df_01.append(df_02)
# 合并 df_01 和 df_02,以 列1,列2,列3 为标识
df_01 = df_01.merge(df_02, on=['列1','列2','列3'])
# 合并 df_01 和 df_02,结构完全一样
df_03 = pd.concat([df_01, df_02], axis=0)
merge 如果有标识以外重名的列会出错,需要设置合并后各自名称 suffixes=('_left','_right')
5. dataframe 拷贝复制
df_copy = df.copy()[['列1','列2','列3']]
6. dataframe 间计算
df_miles[col] = df_income[col] * 10000 / df_quality[col]
7. dataframe 行内计算
df_income['年累计'] = df_income.apply(lambda x: x[list(df_income.filter(regex='月'))].sum(),axis=1)
8. dataframe 列改名
df(columns={‘新列名1’:'旧列名1',‘新列名2’:'旧列名2'},inplace=True)
9. dataframe 去重
df = df.drop_duplicates(['列1','列2'],keep='first', inplace=True)
10. 字典列表转 dataframe
dict_person= {}
dict_person['name'] = ''
dict_person['age'] = 20
list_person = []
list_person.append(dict_person)
df_person = pd.DataFrame(list_person)
11. 获取含有“月”字的列名集合
cols = list(df.filter(regex='月'))
12. 删除含有“月”字的列
df = df[df.columns.drop(list(df.filter(regex='月')))]
13. 按行遍历 dataframe
for index, row in df.iterrows():
print(row['列1'])
14. dataframe 排序
df = df.sort_values(by=['列1','列2'],axis=0,ascending=[False,True])
15. 筛选条件为几个字符串之一
df = df.loc[(df['国家']==('中国'))&(df['城市'].isin(['北京','上海','广州','深圳']))]
16. dataframe 年月日字符串列转 datatime 类型
df['日期'] = pd.to_datetime(df['日期'],format=('%Y{y}%m{m}%d{d}').format(y='年',m='月',d='日'))
17. 筛选条件为起止时间段之间
total = df.loc[ (df['日期'].between(start,end)) ,'金额'].sum()
起止时间和列数据类型须统一为 datetime 或 timestamp
18. dataframe 排名取前30名
df = df.sort_values(by="收入",ascending=False).head(30)