python - 查找并替换数据框内列表中的值

标签 python list pandas dataframe replace

我有一个数据框,列内的值在列表中。我需要替换列表中的几个值。

我想用“;”替换“,”我不想要方括号“[]”我想要它们在一个字符串中

数据框中的示例数据:

[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.stripstr.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/

相关文章:

python - 重新索引数据框并连接列

python - 如何读取此 ROC 曲线并设置自定义阈值?

python - 标准格式 matplotlib -- 将 e 更改为\times 10

Python 和 XML 处理

c# - NHibernate 列表索引映射到不可空的数据库列

python - 在 Python 中跨数据帧搜索并替换匹配值

python - 按 pandas 数据框中的数据分组

python - 使用 Python 从星系照片中删除背景

python 3 : Make itemgetter sort by string length

list - Protege:如何表达 'not hasNext' ?