pandas是一个强大的python库,一定程度上方便表格读写和数据的解析合并处理
在这主要记录下日常经常使用的一些pandas方法和踩到的坑
pandas安装&使用
pip install pandas
import pandas as pd
1、pandas.read_csv('csv')
读取.csv文件,输出DataFrame
可指定读取列
pandas.read_csv('csv', usecols=[0,1]) 读取序列外的第一和第二列
dataframe.iloc[:6] 读取前5行
2、pandas.DataFrame(dict, index=[0])
将dict转为DataFrame输出
index=[0]是指索引从0开始,可自定义
3、dataframe.set_index('columns', drop=False, inplace=True)
将colunms列设置为新的序列,方便将colunms作为key转dict
当drop=False,inplace=True,colunms列仍保留
dataframe.reset_index(drop=True, inplace=False)
可以将更新序列的dataframe还原
4、删除包含NaN的行或列
axis=0 指对行操作
axis=1 指对列操作
dataframe.dropna(axis=0, how='any')
针对指定列
df.dropna(subset=[columns], axis=0)
5、dataframe[['columns']] = dataframe[['columns']].astype('float')
将columns列类型转换为float
6、dataframe.rename(columns={'c':'test_c'})
转换列名
7、dataframe合并
dataframe_a.merge(dataframe_b, how='left', left_on='c', right_on='c')
注:指定merge的left_on和right_on columns必须类型一致,否则merg数据异常
8、dataframe转dict
dataframe.to_dict('index')
dataframe.to_dict()
dataframe.to_dict('list')
根据实际需要使用
9、当columns出现多对多转dict时
dataframe.groupby('colunms').apply(lambda x:x.to_dict('r')).to_dict()
columns是作为key的那一列
没有合适数据不做演示
10、删除某特性值的行
dataframe[~dataframe['columns'].isin(['None'])]
取反思路
或:
"""
删除值为0的行
"""
df.drop(df[df[columns]==0].index, inplace=True)
11、DataFrame list行扩展成多行
import numpy as np
new_value = np.dstack(np.repeat(dataframe.columns[0].values, list(map(len, dataframe.columns[1].values))), np.concatenate(d.columns[1].values))
pd.DataFrame(data=nv[0], columns=d.columns)
"""
建议使用该方法,可对3列以上的DataFrame扩展
"""
import pandas as pd
import numpy as np
row_len = list(map(len, df[columns].values))
rows = list()
for c in df.columns:
if c == columns:
row = np.concatenate(df[c].values)
else:
row = np.repeat(df[c].values, row_len)
rows.append(row)
new_df = pd.DataFrame(np.dstack(tuple(rows))[0], columns=df.columns)
12、查询符合条件数据
dataframe.query('columns[0] in {}'.format(rules))
13、根据相同值合并
dataframe.columns[1] = dataframe.columns[1].astype('str')
dataframe.groupby('fda_appl_no').apply(lambda s: [','.join(s[dataframe.columns[1]])])
dataframe.columns[1].apply(lambda s: s.split(','))
14、DataFrame去重
df.drop_duplicates()
15、更换列位置
df.loc[:, [columns1, columns0]]
16、针对某列进行排序
df.sort_values(by=columns)
17、填充NaN
"""
使用0填充NaN
"""
df.fillna(0)
18、将两列合并成新的一列
"""
sep指定分隔符,默认空
"""
df[new_columns] = df[columns0].map(str).str.cat(df[columns1].map(str), sep=',')
注:合并的两列不是str需转str
19、指定列函数操作
"""
apply提供了应用在行列的方法
"""
DataFrame.apply(self, func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)[source]
df[columns] = df.columns[columns].apply(lambda s: s.split(','))
更新中