Mar*_*sli 5 python dataframe python-3.x pandas
我有一个数据框(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
...
Run Code Online (Sandbox Code Playgroud)
现在,我的目标是针对add_rd该event列中的每个列,该列中的关联NaN值environment应替换为string 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
...
Run Code Online (Sandbox Code Playgroud)
我到目前为止所做的
我偶然发现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'
Run Code Online (Sandbox Code Playgroud)
缺少索引或某种迭代器来访问event列中的等效值。
我尝试了这个:
df['environment'] = np.where(pd.isnull(df['environment']), df['environment'] = 'RD', df['environment'])
SyntaxError: keyword can't be an expression
Run Code Online (Sandbox Code Playgroud)
这显然没有用。
我看了几个问题,但不能以答案中的建议为基础。布莱克的问题 西蒙的问题 szli的问题 简·威廉姆斯· 图尔普的问题
那么,如何基于其他列的值替换一列中的值?
现在我的目标是对于事件列中的每个 add_rd,应将环境列中的关联 NaN 值替换为字符串 RD。
根据@Zero 的评论,使用pd.DataFrame.loc和布尔索引:
df.loc[df['event'].eq('add_rd') & df['environment'].isnull(), 'environment'] = 'RD'
Run Code Online (Sandbox Code Playgroud)
您可以考虑使用where:
df.environment.where((~df.environment.isnull()) & (df.event != 'add_rd'),
'RD', inplace=True)
Run Code Online (Sandbox Code Playgroud)
如果不满足条件,则将值替换为第二个元素。
| 归档时间: |
|
| 查看次数: |
5240 次 |
| 最近记录: |