我有一个数据帧(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
,应该用字符串RD
替换NaN
列中关联的NaN
值。
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')
,它代替了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 questionSimon's questionszli's questionJan Willems Tulp's question
那么,如何基于其他列值替换列中的值?
根据@Zero的注释,使用^{} 和布尔索引:
如果您只想用“rd”替换“add\u rd”,这对您很有用
输出:
如果有许多值要根据事件替换,则可能需要使用“event”列值跟随groupby
输出:
您可以考虑使用^{} :
如果不满足条件,则值将被第二个元素替换。
相关问题 更多 >
编程相关推荐