pandas 应用

类似vlookup

 

1
2
3
4
5
6
7
8
9
10
11
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列

1
2
3
4
5
6
7
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])<br>res = pd.concat([res, pd.DataFrame(columns=['AAA', 'bbb'])])#要加sort,

  

横向合并

1
2
3
4
5
6
7
8
9
10
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列

1
2
3
4
5
6
7
8
9
10
11
12
13
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)

  

字符转换

1
2
3
4
5
6
7
8
9
10
11
12
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)

  

 

分割一列为多列, 修改列标

1
2
3
4
5
6
7
8
9
10
11
12
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)

  

 修改行标列标

1
2
>>>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)

 

posted @   CrossPython  阅读(198)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示