我必须阅读和处理一组文件(例如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
如何在熊猫中做到这一点?
答案 0 :(得分:0)
您定义的d {}似乎正在尝试将Idass重命名为IdassId。我认为您的key:value配对已切换。
答案 1 :(得分:0)
我假设您将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