Pandas命令记录(自用)

替换具体字段列中,值包含0的  替换成1, 比如值是  x101,   那么就会被替换成  x111

df['a'] = df['a'].str.replace('0', '1')


替换具体字段列中,值等于0的  替换成1, 比如值是  0,   那么就会被替换成  1,   如果值是  x101,  那么不会替换,因为需要完全匹配才替换

df['a'] = df['a'].replace('0', '1')


过滤某列中 值 存在一个列表中的行 , 比如下面的列子,可以取出a字段中,出现值为['aa','ab','ac']列表中的行数据

df1 = df[df['a'].isin(['aa', 'ab', 'ac'])]


过滤某列中值 等于,大于,小于等 获取数据,比如下面的列子, 可以取出a字段中大于等于666的数据,大于和小于用在数据类型上,等于可以用数字,字符串上都可以,下面是两种方法

df_filter = df[df["a"] >=666]

df_filter = df.loc[df.a >=666]


根据字段列排序,可多字段,多字段排序把‘a’改成['a','b'],与sql中order by功能相同, 下面举例是根据 a 字段降序,并替换原有的df,   注意排序的值类型必须统一

df.sort_values(by='a', ascending=False,inplace=True)


对列进行去重,第二个参数 keep 包含的值 有: first、last、False,

df.drop_duplicates(subset=['a'], keep='last', inplace=True)

df.drop_duplicates(keep='last', inplace=True)                   #第一个参数不写时,表示对所有列进行去重,保持每行是唯一的


删除具体列为nan的行,df1等于df中a列不为空的数据,既删除了a列中为nan的行

df1 = df[pd.notna(df['a'])]


填充值为nan的单元格

df1.fillna('value', inplace=True)                      #用指定值value填充,并替换原df                   

df1.fillna({'a':'aa', 'b':'bb'},  inplace=True)       #用字典里对应指定值填充,并替换原df

df1.fillna(method='ffill',  inplace=True)           #用前一个非缺失值填充该缺失值,并替换原df

df1.fillna(method='bfill',  inplace=True)           #用后一个非缺失值填充该缺失值,并替换原df


过滤某列中 值 是否包含指定值,与mysql的like '%abc%'功能一样, 下面例子:过滤df的a字段中包含了'abc'的行

df = df[df['a'].str.contains('abc')]


统计dataframe里指定列所有值出现的次数, 比如取 a 列所有数据出现的次数

df['a'].value_counts()                                #此方法生产了一个series

df['a'].value_counts().to_dict()                   #此方法生产了一个字段,key是a列的值,value是值出现的次数

df1 = pd.DataFrame(list(df['a'].value_counts().to_dict().items()), columns=['a','a_count'])      # 此方法在统计a列每个值出现的次数后再转换成dataframe, 其中df1的a列于df的a列是可以merge的, df1的c_count则是出现的次数


dataframe转换成列表嵌套字段,列表里的每一个元素为字典,代表每一行数据,每个字典是有多个key,value,key为字段名,value为具体数据

df1 = df.to_dict('records')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。