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(','))
更新中