文章目录
-
-
- 选取多列
- 筛选
- 删除多列
- 删除单列
- count
- 遍历(iterrows)
- 模糊匹配
- pandas正则匹配修改某列的值
- df 分组之后通过agg运算
- 将df中的时间戳列,格式化成时间格式展示
- 将df中的时间列,格式化成时间戳格式展示
- 日期字符串格式化成日期
- 日期字符串格式化成日期
- 时间字符串格式化成指定时间格式
- 通过时间列生成日期列
- df根据某列或者多列去重之后去第一个
- 判断数据是否为NaN值的方式
- 处理空值,用其他填充
- 替换
- 重命名
- lambda 三目运算
- 校验字符串是否符合正则
- 转化成字典
- 转化类型 str int int64
- 某列数据转化成list
- 根据数据库model字段选取列
- 数据某列是字典格式,希望平铺展开拼接到原始pandas 后面
- 数据某列是列表字典格式,希望平铺展开拼接在原始的pandas后面
- 一次性删除指定多列均为空的行数据
- 某列去重转为列表
- 在df中取model存在的字段列,作为列
- 求行或列的差值
- 排序
- 通过特殊字符分割字符串产生新列
- 通过特殊字符分割选择某个下标的字符串产生新列
-
选取多列
cyb_df=cyb_df.loc[:,['列名1','列名2','列名3']]
筛选
in筛选
表示我只想得到user_id为1或者为2的数据
a_df=a_df[a_df['user_id'].isin([1,2])]
取反
exist_avatar 是列表数据
df = df[~df['personId'].isin(exist_avatar)]
多条件筛选
a_df = a_df[(a_df['Diff'].notnull()) & (a_df['Diff'] > 100)]
筛选某列不为空的行
df = df[df['my_col'].notnull()]
筛选出满足条件的行并赋值
单个条件筛选
df['xx'].loc[df['yy']>5]=0
多个条件筛选
df['xx'].loc[(df['yy']>5)&(df['zz']>9)]=0
用in语句筛选之后赋值
df['xx'].loc[df['yy'].isin([1,2,3,4,5])]=0
删除多列
total_df=total_df.drop(['server_time_x','server_time_y'], axis=1)
删除单列
df.drop('personPhoto', axis=1, inplace=True)
count
import pandas as pd
a=[['1','2','5'],['1','4','7'],['2','5','6']]
b=pd.DataFrame(a,columns=['a','b','c'])
print(b[b['a']=='1'].a.count())
遍历(iterrows)
import pandas as pd
a=[['1','2','5'],['1','4','7'],['2','5','6']]
b=pd.DataFrame(a,columns=['a','b','c'])
for index ,row in b.iterrows():
print(row['a'],row['b'],row['c'])
此方法注意事项,无法修改dataFrame原来的值,修改的只是副本,因此,如果业务逻辑需要修改的话,建议定义一个临时dataFrame
tmp_list=[]
tmp_dict={}
for index, row in base_df.iterrows():
api_data=get_region_city(row['ip'])
tmp_dict['city']= row['city'] if row['city'] != 0 else int(api_data['city_id'])
tmp_dict['region'] = row['region'] if row['region'] != 0 else int(api_data['region_id'])
tmp_dict['country']=get_country_id(api_data['region_id'],provincial_df)
tmp_list.append(tmp_dict.copy())
tmp_df=pd.DataFrame(tmp_list)
base_df[['city','region','country']]=tmp_df[['city','region','country']]#将临时变量的列赋值给原始df,如果base_df在此之前还做了筛选,一定保证筛选只有使用.reset_index()这个方法,重新索引,不然临时df赋值过去,效果不对。
de