如果满足条件,则将具有多个字符串之一的一列更改为另一列

时间:2019-10-26 17:09:50

标签: python pandas

我想用另一列(如果包含在该列中)所包含的字符串(许多中的一个)填充一列

现在,我可以通过为每个不同的字符串重复代码行来做到这一点,我正在寻找更有效的方法。我总共大约有十二个。

df.loc[df['column1'].str.contains('g/mL'),'units'] = 'g/mL'
df.loc[df['column1'].str.contains('mPa.s'),'units'] = 'mPa.s'
df.loc[df['column1'].str.contains('mN/m'),'units'] = 'mN/m'

我不知道如何检查

df.loc[df['column1'].str.contains('g/mL|mPa.s|mN/m'),'units'] = ...

然后使其等于所包含的那个。

3 个答案:

答案 0 :(得分:1)

public Account jsonToObject(Map<String, Object> map){ ObjectMapper objectMapper = new ObjectMapper(); Account account = objectMapper.convertvalue(map.get("account"),Account.class); return account; } 一起使用循环:

str.contains

Series.str.extract并列出所有可能的值:

L = ['g/mL', 'mPa.s', 'mN/m']
for val in L:
    df.loc[df['column1'].str.contains(val),'units'] = val

答案 1 :(得分:1)

使用str.extract

# example dataframe
df = pd.DataFrame({'column1':['this is test g/mL', 'this is test2 mPa.s', 'this is test3 mN/m']})

               column1
0    this is test g/mL
1  this is test2 mPa.s
2   this is test3 mN/m
df['units'] = df['column1'].str.extract('(g/mL|mPa.s|mN/m)')

               column1  units
0    this is test g/mL   g/mL
1  this is test2 mPa.s  mPa.s
2   this is test3 mN/m   mN/m

答案 2 :(得分:0)

实际上,根据docs,您可以使用regex=True参数完全做到这一点!

df.loc[df['column1'].str.contains('g/mL|mPa.s|mN/m', regex=True),'units'] = ...