如何删除行中的重复字符?

时间:2019-01-23 08:31:57

标签: python pandas

这是我的数据框

year
|0|0|0|0|2010|0|0|2018
|0|0|2017|0|0|2019

我尝试过此代码,但对我不起作用

df['year'] = df['year'].str.replace('|0|', ',')

我希望看到这样的结果

    year
    2010, 2018
    2017, 2019

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

我建议提取所有长度为using namespaceSeries.str.findall的数字,然后按4Series.str.join进行连接:

,

需要删除df['year'] = df['year'].str.findall('\d{4}').str.join(', ') print (df) year 0 2010, 2018 1 2017, 2019 值的另一种解决方案:

0

答案 1 :(得分:0)

在Pandas系列中将数字数据存储为逗号分隔的字符串是一种反模式。您放弃矢量化计算的任何可能性。如果可行,请提取整数并添加多个数字系列:

# input dataframe
# df = pd.DataFrame({'year': ['|0|0|0|0|2010|0|0|2018', '|0|0|2017|0|0|2019']})

L = [list(filter(None, map(int, x.strip('|').split('|')))) for x in df['year']]
df = df.join(pd.DataFrame(pd.Series(L).values.tolist()))

print(df)
#                      year     0     1
# 0  |0|0|0|0|2010|0|0|2018  2010  2018
# 1      |0|0|2017|0|0|2019  2017  2019

请注意,filter(None, ...)惯用语用于删除Falsy值,包括0