所有
我想更新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.我怎么能这样做?
非常感谢
答案 0 :(得分:2)
您可以使用.loc
访问者更新现有系列:
df.loc[df['d'] > 1, 'NewColumn1'] = 100
您的问题仍然不明确:“更新但不会覆盖以前的值”没有意义。
将来,提供所需的输出。这比冗长的描述更有价值。
答案 1 :(得分:1)
你需要:
df['NewColumn1'] = np.where( df['d'] > 1 , 100, df['NewColumn1'])