使用条件修改熊猫数据框中的值

时间:2018-11-30 00:08:54

标签: python pandas dataframe

给出此数据框;

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]})

如何更改这些值? 谢谢

3 个答案:

答案 0 :(得分:0)

我认为最简单的方法是将str.containsloc一起使用:

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)