我有两个csv文件File1和File2。我基本上修改File2以匹配File1中的列。在最后一步中,我需要截断修改后的File2,使其只有前50列。我写了这个程序。
import pandas as pd
df1 = pd.read_csv('C:/Users/merged_34_final_ordered.csv', dtype = 'unicode')
df2 = pd.read_csv('C:/Users/merged_52_raw_ip_2016_06_30.csv', dtype = 'unicode')
df3 = df2.T.reindex(df1.columns).T
df3['idSite'] = pd.Series([52 for x in range(len(df3.index))], index=df3.index)
df3.to_csv('C:/Users/merged_52_raw_ip_2016_06_30_reordered.csv',usecols = list(range(50)),index=False)
这似乎不起作用,因为它不会截断文件。仅当我们在read_csv期间添加它时才有效。
答案 0 :(得分:3)
DataFrame.to_csv()
的正确参数为columns
,而不是usecols
- 后者适用于pd.read_csv()
。但是,正如@ptrj指出的那样,to_csv()
期望列名。您可以选择前50列并在其上调用to_csv()
,
df.iloc[:,:50].to_csv(filename, index=False)
或使用@ ptrj的方法获取前50列的名称。
答案 1 :(得分:0)
您的部分代码可以简化:
df1 = pd.read_csv(...)
df2 = pd.read_csv(...)
df3 = df2.reindex(columns=df1.columns)
df3['idSite'] = 52
# names of the first 50 cols:
cols = df3.columns[:50]
df3.to_csv('filename', columns=cols, index=False)
您收到错误是因为to_csv
需要列名。