首页 > 解决方案 > 更新数据框中的多个单元格值

问题描述

我的数据集是这种形式:

df = pd.DataFrame({'ID': [1,2,3,4],
                   'Type': ['A', 'B', 'B', 'B'],
                   'Value': [100, 200, 201, 120]})

我想通过以下方式更新数据框:

df = pd.DataFrame({'ID': [1,2,3,4],
                   'Type': ['A', 'B1', 'B2', 'B3'],
                   'Value': [100, 200, 201, 120]}) 

我正在尝试的代码是:

df[df['Type'] == 'B', df['Value'] == 200] = 'B1'

但我收到错误:

ValueError: Cannot reindex from a duplicate axis

有人可以帮我解决问题吗?

谢谢!

标签: pythonpandas

解决方案


如果需要通过使用count s by和 join byB开始的迭代器转换所有值:1np.arangeTruesum+

m = df['Type'] == 'B'
df.loc[m, 'Type'] += np.arange(1, m.sum()+1).astype(str)
print (df)

   ID Type  Value
0   1    A    100
1   2   B1    200
2   3   B2    201
3   4   B3    120

推荐阅读