pandas 应用
类似vlookup
import pandas as pd file = pd.read_csv('NIN411PF.CSV', encoding='ANSI') a = pd.DataFrame({'PNUM95':['1609724175'], 'REFN95':['899270'] }) #按2个条件查询 file1 = pd.merge(file, a, on=['PNUM95','REFN95']) file1.to_csv('abc.csv')
获取列标集, 行标集
后面不能加()
df.columns
df.index
增加一列
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
res = pd.concat([df1, df2, df3])
res['e']=None
print(res)
增加2列
import numpy as np import pandas as pd df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
res = pd.concat([df1,df2,df3])
res = pd.concat([res, pd.DataFrame(columns=['AAA', 'bbb'])])
#要加sort,
横向合并
import numpy as np import pandas as pd df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((4,4))*2, columns=['a','b','c','d']) res = pd.concat([df1,df2,df3], axis=1)
res = pd.concat([df1,df2,df3], axis=0, ignore_index=True) #axis=0 纵向合并, index行标重新编写
加3列
import numpy as np import pandas as pd df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((4,4))*2, columns=['a','b','c','d']) res = pd.concat([df1,df2,df3], axis=0, ignore_index=True) df = pd.concat([res, pd.DataFrame(columns=['x','y','z'])]) print(df)
字符转换
import numpy as np import pandas as pd df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((4,4))*2, columns=['a','b','c','d']) res = pd.concat([df1,df2,df3], axis=0, ignore_index=True) res = res.astype({'a':'str','b':'str'}) #a, b列转成字符, #res = res.astype(str) #整个数据表全转成字符 print(res.a)
分割一列为多列, 修改列标
import numpy as np import pandas as pd res = pd.read_csv('Book1.csv') df1 = res.Item.str.split('-', expand=True) # 按 - 分割, 加 expand=True df2 = pd.concat([res, df1], axis=1) df2.columns = ['a','b','c','d','e'] #重新设置列表 df2.rename(columns={'e':'xx'}, inplace=True) #修改制定列名, 加 inplace=True print(df2)
修改行标列标
>>>data.rename(index={'A':'D', 'B':'E', 'C':'F'}, columns={'a':'d', 'b':'e', 'c':'f'}, inplace = True) >>>data
print(df2.head(0)) ##返回data的前几行数据,默认为前五行,需要前十行则data.head(10)
print(df2.tail(1)) #返回data的后几行数据,默认为后五行,需要后十行则data.tail(10)