我有一个数据框,列内的值在列表中。我需要替换列表中的几个值。
我想用“;”替换“,”我不想要方括号“[]”我想要它们在一个字符串中
数据框中的示例数据:
[Yuengert Andrew M.]
[Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xi]
[Wright Chadwick L., Niederkohr Ryan D., Knopp]
预期输出:
Yuengert Andrew M.
Chen Tianxu; Tribbitt Mark A.; Yang Yi; Li Xi
Wright Chadwick L.; Niederkohr Ryan D.; Knopp
最佳答案
如果值为列表
,则可以使用join
:
df = pd.DataFrame({'col':[['Yuengert Andrew M.'],
['Chen Tianxu', 'Tribbitt Mark A.', 'Yang Yi', 'Li Xi'],
['Wright Chadwick L.', 'Niederkohr Ryan D.', 'Knopp']]})
print (df)
col
0 [Yuengert Andrew M.]
1 [Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xi]
2 [Wright Chadwick L., Niederkohr Ryan D., Knopp]
print (type(df.loc[0, 'col']))
<class 'list'>
df['col'] = df['col'].apply('; '.join)
print (df)
col
0 Yuengert Andrew M.
1 Chen Tianxu; Tribbitt Mark A.; Yang Yi; Li Xi
2 Wright Chadwick L.; Niederkohr Ryan D.; Knopp
另一个解决方案:
df['col'] = ['; '.join(x) for x in df['col']]
print (df)
col
0 Yuengert Andrew M.
1 Chen Tianxu; Tribbitt Mark A.; Yang Yi; Li Xi
2 Wright Chadwick L.; Niederkohr Ryan D.; Knopp
<小时/>
但是如果字符串
Series.replace
^
匹配字符串开头和 $
字符串结尾:
df = pd.DataFrame({'col': ['[Yuengert Andrew M.]',
'[Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xi]',
'[Wright Chadwick L., Niederkohr Ryan D., Knopp]']})
print (df)
col
0 [Yuengert Andrew M.]
1 [Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xi]
2 [Wright Chadwick L., Niederkohr Ryan D., Knopp]
print (type(df.loc[0, 'col']))
<class 'str'>
df['col'] = df['col'].replace(['^\[|\]$', ','],['', ';'],regex=True)
print (df)
col
0 Yuengert Andrew M.
1 Chen Tianxu; Tribbitt Mark A.; Yang Yi; Li Xi
2 Wright Chadwick L.; Niederkohr Ryan D.; Knopp
另一个解决方案 str.strip
和 str.replace
:
df['col'] = df['col'].str.strip('[]').str.replace(',', ';')
print (df)
col
0 Yuengert Andrew M.
1 Chen Tianxu; Tribbitt Mark A.; Yang Yi; Li Xi
2 Wright Chadwick L.; Niederkohr Ryan D.; Knopp
关于python - 查找并替换数据框内列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44753445/