Python 有效地将列标题分配给csv文件

Python 有效地将列标题分配给csv文件,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我想了解如何使用逗号分隔符有效地将列标题分配给CSV文件。目前,我正在手动分配标题,一旦我知道有多少列。问题是,不同文件的列数不同 因此,下面的第一个数据帧有3列。我通过以下方式分配 import pandas as pd d = ({ 'Col 1' : ['X','Y'], 'Col 2' : ['A','B'], 'Col 3' : ['C','D'], }) df = pd.DataFrame(data=d) df.column

我想了解如何使用逗号分隔符有效地将列标题分配给CSV文件。目前,我正在手动分配标题,一旦我知道有多少列。问题是,不同文件的列数不同

因此,下面的第一个数据帧有3列。我通过以下方式分配

import pandas as pd

d = ({
    'Col 1' : ['X','Y'],  
    'Col 2' : ['A','B'], 
    'Col 3' : ['C','D'],        
    })

df = pd.DataFrame(data=d)

df.columns = ['A','B','C']
如果我有下面的df并且我使用相同的代码,它将返回一个错误

ValueError:长度不匹配:预期轴有2个元素,新值有3个元素

我理解这是因为只有两列。我问的是如何有效地分配头
A-n

我知道将
df.columns
更改为
['A','B']
并不难,但如果我每天多次这样做,效率会非常低。

使用列表理解、
字符串
内置模块和字典的长度
d

df.columns = ([x for x in string.ascii_uppercase if ord(x) < ord("A") + len(d)])
df.columns=([x代表string.ascii中的x_大写,如果ord(x)
as
string.ascii_大写
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
字符串


如果需要26个以上的列标题,还可以使用
string.ascii_字母
或类似的常量。

如果可以将实际的列名放在那里,为什么要使用空格作为字典键<代码>d={'A':[…],'B':[…]}
。顺便说一句,编辑词典后,它现在只有一个值(b因为所有三个键都是相同的)。我不知道如何从您编写的内容中获得
DataFrame
,但在第二种情况下,您试图为只有两列的
DataFrame
分配第三列名称。@DYZ@艾多。我已经修改了输入数据。我基本上希望遍历该文件并插入列标题
A-n
。最终标题为
n
。现在我正在手动计算。看起来你在解决一个错误的问题。文件中的数据看起来如何?是CSV文件吗?是的。我从文件中提取相同的数据,但额外内容的数量不同。因此,上传的每个文件都必须手动标记。这有意义吗?
df.columns = ([x for x in string.ascii_uppercase if ord(x) < ord("A") + len(d)])