首页 > 解决方案 > 加入多个 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 列。

标签: pythonpandasdataframecsv

解决方案


尝试这个:

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')

推荐阅读