我有一个数据框(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
...
现在我的目标是 event
列中的每个 add_rd
,以及 environment
中关联的 NaN
值> 列应替换为字符串 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
...
<小时/>
到目前为止我做了什么
我偶然发现了 df['environment'] = df['environment].fillna('RD')
,它取代了 every NaN
(这不是我要找的), pd.isnull(df['environment'])
正在检测缺失值和 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's question Simon's question szli's question Jan Willems Tulp's question
那么,如何根据另一列的值替换一列中的值?
最佳答案
Now my goal is for each add_rd in the event column, the associated NaN-value in the environment column should be replaced with a string RD.
根据@Zero的评论,使用pd.DataFrame.loc
和 bool 索引:
df.loc[df['event'].eq('add_rd') & df['environment'].isnull(), 'environment'] = 'RD'
关于python - Pandas:根据其他列值有条件地替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224142/