删除列中的部分值

时间:2019-06-11 14:10:17

标签: python pandas dataframe lambda

说我在数据帧b中有列df。 b列看起来像

b
c'ASD56y'
c'DSAD89y'
c'FGTH89y'

我需要删除b列中的单引号和c。我需要类似的输出

 b
    ASD56y
    DSAD89y
    FGTH89y

这是我尝试过的,

 df.b.apply(lambda x: x.strip('c'))

将错误抛出为: TypeError:需要一个类似字节的对象,而不是'str'

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:3)

我认为split可以做到

df.b.str.split("'").str[1]
Out[93]: 
0     ASD56y
1    DSAD89y
2    FGTH89y
Name: b, dtype: object
df.b=df.b.str.split("'").str[1]

根据以下评论,问题将变成encode \ decode

df['b'].str.decode('utf-8')

答案 1 :(得分:1)

在制作DataFrame之前,请确保您decode字典的值

>>> import pandas as pd
>>> toy = {0: b'ENF009', 1: b'ENF3', 2: b'ENF3', 3: b'ENF4'}
>>> df = pd.DataFrame([v.decode() for v in toy.values()], index=toy.keys())
>>> print(df)
        0
0  ENF009
1    ENF3
2    ENF3
3    ENF4