连接多个CSV以创建一个大文件。有些CSV有不同的列名,如何处理?

2024-04-27 00:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆CSV文件,我想连接成一个大文件

我注意到每个文件中的列不是唯一的。少数栏目中有“package”一词。我想用“pkg”替换“package”

我使用glob方法拉入了.csv的完整列表,然后使用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列额外的内容


1条回答
网友
1楼 · 发布于 2024-04-27 00:03:56

试试这个:

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

相关问题 更多 >