给出此数据框;
df = pd.DataFrame({'col1': ['apple','lemon','orange','grape'],
'col2':['franceCNTY','italy','greeceCNTY','spain']})
我想用此规则更改col2中的值; 如果该值包含CNTY,则保持原样 否则将值设置为Nan。
因此,最终数据帧将包含以下值;
df2 = pd.DataFrame({'col1': ['apple','lemon','orange','grape'],
'col2':['franceCNTY',np.nan,'greeceCNTY',np.nan]})
如何更改这些值? 谢谢
答案 0 :(得分:0)
我认为最简单的方法是将str.contains
与loc
一起使用:
df.loc[~df.col2.str.contains('CNTY'),'col2'] = np.nan
>>> df
col1 col2
0 apple franceCNTY
1 lemon NaN
2 orange greeceCNTY
3 grape NaN
答案 1 :(得分:0)
熊猫tutorial快速入门
df2['col2'] = df['col2'].apply(lambda name: np.nan if 'CNTY' in name else name)
print(df2)
col1 col2
0 apple NaN
1 lemon italy
2 orange NaN
3 grape spain
答案 2 :(得分:0)
where
您可以就地或不就地使用where
:
df['col2'] = df['col2'].where(df['col2'].str.contains('CNTY'))
print(df)
col1 col2
0 apple franceCNTY
1 lemon NaN
2 orange greeceCNTY
3 grape NaN
# in place version
df['col2'].where(df['col2'].str.contains('CNTY'), inplace=True)