python - 加入多个 csvs 以创建一个大文件。有些csv有不同的列名,如何处理?
问题描述
我有一堆 CSV 文件,它们喜欢连接成一个大文件。
我注意到每个文件中的列不是唯一的。少数列在列中包含“包”一词。我想用“pkg”替换“package”。
我使用 glob 方法提取了 .csvs 的完整列表,然后使用 pd.concat 将数据组合在一起
数据1.csv
数据2.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 列。
解决方案
尝试这个:
df = pd.DataFrame([], columns=['package dimension', 'package height', 'package length'])
df.columns = df.columns.str.replace('package','pkg')
print(df.columns)
输出:
Index(['pkg dimension', 'pkg height', 'pkg length'], dtype='object')
推荐阅读
- python - 我在使用 Selenium 制作类似 Instagram 的机器人时遇到问题
- angular - Angular 的十进制管道可以显示 4 个不带逗号的整数吗?
- android - Facebook 和 Telegram 等应用程序如何在“设置”中的“清除数据”中保留用户数据?
- asp.net - UPDATE 语句中的语法错误。代码有什么问题?
- javascript - 在innerHTML 中单击
- angular - Ionic 4 + Angular FingerprintAIO 不是受支持的插件?
- python - 将数据从一对列拆分为多对列
- git - 有人使用 Git 作为 Nintex Workflows 的存储库吗?
- c# - 在代码隐藏中创建 div 的最佳方法
- c# - RichTextBox 使用 CFM_COLOR 代码更改字体颜色