all_data['Title']= all_data['Name'].str.split(', ', expand=True)[1].str.split('.', expand=True)[0]
谁能解释一下这行代码的含义是什么?尤其是
expand=True
和 [1]
[0]
。
如果您使用 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
将拆分的字符串展开为单独的列。
如果为 True,则返回 DataFrame/MultiIndex 扩展维度。
如果为 False,则返回 Series/Index,包含字符串列表。
s = pd.Series(
[
"this is a regular sentence",
]
)
s.str.split(expand=True)
0 1 2 3 4
这是一个常规句子