【发布时间】:2021-06-16 01:27:18
【问题描述】:
我有一堆 CSV 文件,它们想连接成一个大文件。
我注意到每个文件中的列并不是唯一的。少数列在列中包含“包”一词。我想用“pkg”替换“package”。
我使用 glob 方法提取了完整的 .csv 列表,然后使用 pd.concat 将数据组合在一起
data1.csv
data2.csv
grouped data result example:
package dimension package height package length pkg dimensions pkg height pkg length
1 10 4 6 11 9
2 15 5 7 16 21
3 30 6 8 31 7
数据应该是:
pkg dimensions pkg height pkg length
6 11 9
7 16 21
8 31 7
1 10 4
2 15 5
3 30 6
我有一本包含所有正确列名的字典,例如:
df.rename(columns ={'package dimension' : 'pkg dimensions' etc})
而不是打开每个 excel 文件并将我想要的列重命名为列表理解。到目前为止,这是我得到的:
data = list of all excel file locations
i in range(len(data):
df = pd.read_csv(fedex[i], index_col=0)
df = df.rename(columns ={'package dimension' : 'pkg dimensions' etc}, inplace=True)
df = pd.concat((pd.read_csv(i).assign(filename= os.path.basename(i)) for i in data), ignore_index = True)
我不知道如何重命名列并将它们正确放置。在我运行它之后它可以工作,但我最终得到了 91 列或 11 列。
【问题讨论】:
-
您是否尝试剥离列值?看看创建了哪些额外的列。
-
是的,所以这个文件每天都会被提取,我认为列名是一个错字。列名应该是 pkg 但输入的是包。因此,当我尝试连接所有 csvs 时,我得到了一个包含 package 和 pkg 列的数据框,我只想要 pkg 列。所以我的想法是一旦我更改了列名然后加入我就不会得到额外的列
标签: python pandas dataframe csv