根据单独系列中的条件更新Pandas系列

时间:2018-03-23 10:20:57

标签: python pandas

所有

我想更新pandas中的现有列。这是一个例子:

df = pd.DataFrame({'a': ['A', 'B', 'C', 'A'], 'b': ['C', 'A', 'B', 'C'], 'c': np.random.randn(4), 'd': np.random.randn(4) })

df['NewColumn1'] = np.where( df['a'].str.contains('A') & df['b'].str.contains('C') , df['c'], 1)

df
   a  b         c         d  NewColumn1
0  A  C -0.668001 -0.434521   -0.668001
1  B  A  1.893248  1.927666    1.000000
2  C  B -2.145310  0.602808    1.000000
3  A  C  0.323770  0.966303    0.323770

我创建了一个名为' NewColumn1'。

的新列

现在我想根据新条件更新NewColumn1(我的目标是更新NewColumn1而不是覆盖以前的值)。

我想更新' NewColumn1'在列' d'列中将其值设置为100大于1.我怎么能这样做?

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以使用.loc访问者更新现有系列:

df.loc[df['d'] > 1, 'NewColumn1'] = 100

您的问题仍然不明确:“更新但不会覆盖以前的值”没有意义。

将来,提供所需的输出。这比冗长的描述更有价值。

答案 1 :(得分:1)

你需要:

df['NewColumn1'] = np.where( df['d'] > 1 , 100, df['NewColumn1'])