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

Hui*_*ONG 8 python string expand split pandas

all_data['Title']= all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=True)[0]
Run Code Online (Sandbox Code Playgroud)

谁能解释一下这行代码的含义是什么?特别是与expand=True[1] [0].

Ale*_* QA 9

如果您使用 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
Run Code Online (Sandbox Code Playgroud)
姓名 标题
0 鲍勃·罗斯先生 先生
1 爱丽丝,海藻夫人 太太
2 拉里,柠檬先生 先生
3 约翰,约翰逊先生 先生

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

用代码示例更好地解释:

```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
Run Code Online (Sandbox Code Playgroud)
0
0 [鲍勃,罗斯先生]
1 [爱丽丝,海藻夫人]
2 [拉里,柠檬先生]
3 [约翰,约翰逊先生]
all_data['Name'].str.split(', ', expand=False) # or no expand at all
Run Code Online (Sandbox Code Playgroud)
0 1
0 鲍勃 罗斯先生
1 爱丽丝 海藻女士
2 拉里 柠檬先生
3 约翰 约翰逊先生
all_data['Name'].str.split(', ', expand=True) 
Run Code Online (Sandbox Code Playgroud)
0
0 [罗斯先生]
1 [藻类女士]
2 [柠檬先生]
3 [约翰逊先生]
all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=False)
Run Code Online (Sandbox Code Playgroud)
0 1
0 先生 罗斯
1 太太 藻类
2 先生 柠檬
3 先生 约翰逊

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


wp7*_*8de 2

看看这里:pandas.Series.str.split

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

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

如果为 False,则返回包含字符串列表的系列/索引。

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

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