使用expand=True分割字符串。谁能解释一下这是什么意思?

问题描述 投票:0回答:2
all_data['Title']= all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=True)[0]

谁能解释一下这行代码的含义是什么?尤其是

expand=True
[1]
[0]

python pandas string split expand
2个回答
7
投票

如果您使用 Pandas,您可能也了解 Jupyter Notebooks。 因此,为了简单性和可读性,让我们完成您发布的代码 以及类似笔记本格式的一些附加信息:

```python
import pandas as pd

raw_name = ['Bob, Mr. Ross', 'Alice, Mrs. Algae', 'Larry, Mr. lemon', 'John, Mr. Johnson']
all_data = pd.DataFrame({'Name': raw_name})

# This the OP's line
all_data['Title'] = all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=True)[0]
    
all_data
姓名 标题
0 鲍勃,罗斯先生 先生
1 爱丽丝,海藻夫人 夫人
2 拉里,柠檬先生 先生
3 约翰,约翰逊先生 先生

其中

expand=True
呈现一组字符串列。因此,在第一次分割之后,您可以再次应用另一个
str.split
方法,因为第一次分割已将字符串数据帧呈现为列。如果使用常规拆分(或
expand=False
),这会稍微复杂一些,它会呈现一系列列表。

用代码示例更好地解释:

all_data['Name'].str.split(', ', expand=False) # or no expand at all
0
0 [鲍勃,罗斯先生]
1 [爱丽丝,海藻夫人]
2 [拉里,柠檬先生]
3 [约翰,约翰逊先生]
all_data['Name'].str.split(', ', expand=True) 
0 1
0 鲍勃 先生。罗斯
1 爱丽丝 夫人藻类
2 拉里 先生。柠檬
3 约翰 先生。约翰逊
all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=False)
0
0 [罗斯先生]
1 [藻类女士]
2 [柠檬先生]
3 [约翰逊先生]
all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=True)
0 1
0 先生 罗斯
1 夫人 藻类
2 先生 柠檬
3 先生 约翰逊

参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.split.html


2
投票

看这里:pandas.Series.str.split

将拆分的字符串展开为单独的列。

如果为 True,则返回 DataFrame/MultiIndex 扩展维度。

如果为 False,则返回 Series/Index,包含字符串列表。

s = pd.Series(
    [
        "this is a regular sentence",
    ]
)    
s.str.split(expand=True)

0 1 2 3 4
这是一个常规句子

© www.soinside.com 2019 - 2024. All rights reserved.