我有一个看起来像这样的数据框(df):
environment event
time
2017-04-28 13:08:22 NaN add_rd
2017-04-28 08:58:40 NaN add_rd
2017-05-03 07:59:35 test add_env
2017-05-03 08:05:14 prod add_env
...
Now my goal is for each add_rd
in the event
column, the associated NaN
in the environment
column should be replaced with a字符串 RD
。
environment event
time
2017-04-28 13:08:22 RD add_rd
2017-04-28 08:58:40 RD add_rd
2017-05-03 07:59:35 test add_env
2017-05-03 08:05:14 prod add_env
...
到目前为止我做了什么
I stumbled across df['environment'] = df['environment].fillna('RD')
which replaces every NaN
(which is not what I am looking for), pd.isnull(df['environment'])
which is detecting missing values and np.where(df['environment'], x,y)
这似乎是我想要的,但没有用。 此外,我是否尝试过这个:
import pandas as pd
for env in df['environment']:
if pd.isnull(env) and df['event'] == 'add_rd':
env = 'RD'
索引缺失或某种迭代器访问 event
列中的等效值。
我试过这个:
df['environment'] = np.where(pd.isnull(df['environment']), df['environment'] = 'RD', df['environment'])
SyntaxError: keyword can't be an expression
这显然没有用。
我看了几个问题,但无法基于答案中的建议。 Black 的问题 Simon 的问题 szli 的问题 Jan Willems Tulp 的问题
那么,如何根据另一列值替换列中的值?
原文由 Martin Müsli 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据@Zero 的评论,使用
pd.DataFrame.loc
和布尔索引: