Del*_*ari 3 python indexing slice pandas
我有一个数据帧列,看起来像这样:
s = pd.Series(["a0a1a3", "b1b3", "c1c1c3c3"], index=["A", "B", "C"])
Run Code Online (Sandbox Code Playgroud)
我可以找到str.find方法在每个单元格中找到我想要的indeces:
s.str.find('1').values
array([3, 1, 1])
s.str.find('3').values
array([5, 3, 5])
Run Code Online (Sandbox Code Playgroud)
但是我找不到如何使用这些函数来剪切该列中的字符串.例如:
s.str[s.str.find('1').values:s.str.find('3').values].values
Run Code Online (Sandbox Code Playgroud)
给
array([ nan, nan, nan])
Run Code Online (Sandbox Code Playgroud)
哪种结合这些功能的正确方法?
那是你要的吗?
In [87]: s.str.split('1').str[0]
Out[87]:
A a
B b
C c
dtype: object
In [88]: s.str.split('1').str[1]
Out[88]:
A a2
B b2
C c2
dtype: object
Run Code Online (Sandbox Code Playgroud)
要么
In [89]: s.str.split('1', expand=True)
Out[89]:
0 1
A a a2
B b b2
C c c2
Run Code Online (Sandbox Code Playgroud)
您将在官方Pandas docs网站上找到许多有用的示例
更新:
In [203]: s = pd.Series(["a1a2", "b1b2", "c1c2", "aaaaaa1XX"], index=["A", "B", "C", "D"])
In [204]: s
Out[204]:
A a1a2
B b1b2
C c1c2
D aaaaaa1XX
dtype: object
In [205]: s.str.split('1', expand=True)
Out[205]:
0 1
A a a2
B b b2
C c c2
D aaaaaa XX
Run Code Online (Sandbox Code Playgroud)
UPDATE2:
In [224]: s
Out[224]:
A a0a1a3
B b1b3
C c1c1c3c3
dtype: object
In [225]: s.str.extract(r'1(.*?)3', expand=False)
Out[225]:
A a
B b
C c1c
dtype: object
Run Code Online (Sandbox Code Playgroud)
注:请务必上传两个源和所需的数据集-否则,我们不得不猜测什么是你想实现...
| 归档时间: |
|
| 查看次数: |
3035 次 |
| 最近记录: |