【发布时间】:2019-12-04 12:31:58
【问题描述】:
早安,
我有一个数据框,我想在其中为该列的每一行隔离一部分字符串。我遇到的问题是每一行都需要有一个不同长度的子字符串,特别是我想只保留字符串直到第一次出现“。” (句号)加上接下来的两个字母。
例子:
import pandas as pd
x = [ [ 34, 'Sydney.Au123XX'] ,
[30, 'Delhi.As1q' ] ,
[16, 'New York.US3qqa']]
x = pd.DataFrame(x)
x.columns = ["a", "b"]
#now I want to substring each row based on where "." occurs.
#I have tried the following:
y = x["b"].str.slice( stop = x["b"].str.find(".") + 2)
y = x["b"].str[0: x["b"].str.find(".")+ 2]
#desired output
desired = [[ 34, 'Sydney.Au'] ,
[30, 'Delhi.As' ] ,
[16, 'New York.US'] ]
desired = pd.DataFrame(desired )
desired .columns = ["a", "b"]
请查看我的代码以获得所需的输出。
我不想使用循环。
提前致谢。
【问题讨论】:
-
为什么纽约有
.之后的东西 -
@U10-转发。谢谢,我确实看到了您的答案,并且对于我的问题的第一个版本是正确的。请查看我的问题的更新。 str.split() 可以适用于我希望在“。”之后保留前两个字符的情况。也一样?
-
@U10-转发。我认为对于我修改后的问题,我可以保留 x['b'].str.split('.').str[1] 以保留“。”之后的前两个字母。有没有更好的办法?
标签: python string pandas slice