我想用另一列(如果包含在该列中)所包含的字符串(许多中的一个)填充一列
现在,我可以通过为每个不同的字符串重复代码行来做到这一点,我正在寻找更有效的方法。我总共大约有十二个。
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'] = ...
然后使其等于所包含的那个。
答案 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'] = ...