替换数据框中的值

我有一个包含 3 列(A、B、C)的数据框。当列= 22 时,我想用列更新C列。我已经编写了这样的更新语句,但它正在更新不匹配的行。你能告诉我如何更新数据框中的数据吗?ABNaN

df = pd.DataFrame(data=[[10,20,30],[11,21,31],[12,22,32]], columns=['A','B','C'])
df.C = df[df.B==22].A


不负相思意
浏览 1610回答 4
4回答

幕布斯7119047

让我们尝试一下maskdf.C.mask(df.B==22, df.A,inplace=True)df    A   B   C0  10  20  301  11  21  312  12  22  12

繁星coding

这是执行此操作的几种方法之一,是的,它需要额外的包,但如果您不知道np.where它非常方便。import numpy as npdf['C'] = np.where(df['B']==22, df['A'], df['C'])

德玛西亚99

df.loc[df.B==22, 'C'] = df.loc[df.B==22, 'A']

慕容708150

另一种选择是使用locand reindex:df['C'] = df.loc[df.B==22,'A'].reindex(df.index).fillna(df['C'])理想情况下,您可以np.where在这种情况下使用,但这就是您的代码不起作用的原因:下面df[df.B==22].A返回:2    12您将看到返回值的索引是2,因此当您设置df.C(使用括号表示法而不是.表示法)时,它会更新命名C为前一个结果的系列,该系列不包含其他索引(但仅包含2),因此其他指标设置为np.nan此外,强烈建议不要chained indexing在赋值时使用它,因为它会导致此警告。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python