如何在pandas中读取具有其他列名的列?

2024-09-25 18:17:52 发布

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

我必须读取和处理一组文件(例如:100个文件),其中一个文件的列名为“Idass”。其他文件的列名为“IdassId”。 在处理之后,我选择了一些列并将输出写入excel。你知道吗

df.to_excel(writer, columns=['Date','IdassId','TankNo','GradeNo','Sales'],sheet_name='sales')

在这里,我错过了单个文件的条目,因为它没有“IdassId”这样的列名。它包含带有“Idass”的特定列。 (我无法在处理之前重命名该列,因为它是来自另一个进程的自动进程)。 我试着用IdassId重命名那个列,并试着用excel写。你知道吗

d = {'Idass': 'IdassId'}
df.rename(columns=d).to_excel(writer, columns=['Date','IdassId','TankNo','GradeNo','Sales'],sheet_name='sales')

但上面给出了一个错误,因为另一个文件的列名与'idassId'相同

ValueError: cannot reindex from a duplicate axis

如何在熊猫身上做到这一点?你知道吗


Tags: columns文件tonamedfdateexcelsheet
2条回答

我假设你把excel文件连接在一起,这样看起来就和下面的相似了。你知道吗

   Idass IdassId
0   0.0 NaN
1   1.0 NaN
2   2.0 NaN
3   3.0 NaN
4   4.0 NaN
5   NaN 0.0
6   NaN 1.0
7   NaN 2.0
8   NaN 3.0
9   NaN 4.0

如果要将Idass重命名为IdassId,那么将有两个列命名为IdassId,这就是导致错误的原因。你知道吗

您应该能够填写IdassID的空值并获得所需的结果。你知道吗

df['IdassId'] = df['IdassId'].where(df['IdassId'].notnull(), df['Idass'])
df.drop('Idass', axis=1, inplace=True)

    IdassId
0   0.0
1   1.0
2   2.0
3   3.0
4   4.0
5   0.0
6   1.0
7   2.0
8   3.0
9   4.0

看起来您定义的d{}正在尝试将Idass重命名为IdassId。我认为你的关键字:值配对已切换。你知道吗

相关问题 更多 >