我有一个值列表.如何替换不在给定值列表中的Dataframe列中的所有值?
例如,
>>> df = pd.DataFrame(['D','ND','D','garbage'], columns=['S'])
>>> df
S
0 D
1 ND
2 D
3 garbage
>>> allowed_vals = ['D','ND']
Run Code Online (Sandbox Code Playgroud)
我想用"无"替换数据框的列S中不在列表allowed_vals中的所有值.我怎样才能做到这一点?
您可以使用isin
检查成员资格allowed_list
,~
否定它,然后.loc
修改系列:
>>> df.loc[~df["S"].isin(allowed_vals), "S"] = "None"
>>> df
S
0 D
1 ND
2 D
3 None
Run Code Online (Sandbox Code Playgroud)
因为
>>> df["S"].isin(allowed_vals)
0 True
1 True
2 True
3 False
Name: S, dtype: bool
Run Code Online (Sandbox Code Playgroud)
如果要修改整个帧(而不仅仅是列S),可以创建一个帧大小的掩码:
>>> df
S T
0 D D
1 ND A
2 D ND
3 garbage A
>>> df[~df.isin(allowed_vals)] = "None"
>>> df
S T
0 D D
1 ND None
2 D ND
3 None None
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4447 次 |
最近记录: |