首页 > 解决方案 > 基于两列模式的字符串操作,有什么方便的方法吗?

问题描述

d = {'country': ['US', 'US', 'United Kingdom', 'United Kingdom'],
    'province/state': ['New York', np.nan, 'Gibraltar', np.nan]}
df = pd.DataFrame(data=d)

我想有三个步骤:

  1. 步骤1:用相关国家填写省的NA

    df['province/state'].fillna(df['country'], inplace=True]

  2. 第 2 步:通过将国家和省与“-”连接起来创建一个新的 col:

    df['new_geo'] = df['country'] + '-' + df['province/state']

  3. 第三步:如果重复国家,则删除:例如删除United Kingdom-United Kingdom。只保留那些不重叠的,例如英国-直布罗陀。但我不确定应该使用什么正则表达式。

有没有方便的方法来做到这一点?

标签: pythonpandas

解决方案


尝试:

df['new_geo'] = np.where(df['province/state'].notna(), df['country'] + '-' + df['province/state'], df['country'])
df['province/state']=df['province/state'].fillna(df['country'])

输出:

          country  province/state                   new_geo
0              US        New York               US-New York
1              US              US                        US
2  United Kingdom       Gibraltar  United Kingdom-Gibraltar
3  United Kingdom  United Kingdom            United Kingdom

推荐阅读