pandas系列str链接在一起时不能正常工作

时间:2016-04-26 14:48:56

标签: string pandas replace

我发现使用链式字符串操作对Series进行了一些棘手的处理。

我最终发现每个字符串操作都带有' .str'。如果链接操作可以与应用类似地执行,那将会很好。

这是代码

# Create dataframe
d = dict(a = ['ab\ncdef'], b = ['bbccdd'])
p = pd.DataFrame.from_dict(d)
print(p)

x1 = p.a.str.replace('c','=').replace('\n','-')[0]
x2 = p.a[0].replace('c','=').replace('\n','-')
x3 = p.apply(lambda r : r.a.replace('c','=').replace('\n','-'),axis=1)[0]
x4 = p.a.str.replace('c','=').str.replace('\n','-')[0]
x1,x2,x3,x4

这是输出。您可以看到x1不起作用,但x4工作

      a       b
0  ab\ncdef  bbccdd

('ab\n=def', 'ab-=def', 'ab-=def', 'ab-=def')

作为x3,x4是解决方案......我发布这个主要是为了分享并询问链接字符串操作是否应该应用于单个系列?只是好奇其他人是否打过这个。

1 个答案:

答案 0 :(得分:0)

这样做:

In [89]: p.a
Out[89]:
0    ab\ncdef
Name: a, dtype: object

In [90]: p.a.str.replace('c','=').str.replace('\n','-')
Out[90]:
0    ab-=def
Name: a, dtype: object

PS注意第二 .str

In [91]: p.a.str.replace('c','=').replace('\n','-')
Out[91]:
0    ab\n=def
Name: a, dtype: object