csv文件中authorships.raw_author_name列中有多个author名,名之间用|隔开,jupyter notebook提取每行中每个author名并计算出现次数
时间: 2024-09-20 11:12:58 浏览: 47
jupyter 实现notebook中显示完整的行和列
在Jupyter Notebook中,你可以使用Pandas库来读取csv文件,并通过字符串操作来提取每个作者名。首先,我们需要加载CSV文件并查看数据结构。然后,我们将使用正则表达式(regex)分割`authorships.raw_author_name`列中的值,提取出每个作者名,并计算每个作者名出现的次数。
以下是步骤:
1. 导入所需库:
```python
import pandas as pd
import re
```
2. 读取csv文件:
```python
df = pd.read_csv("your_file.csv") # 替换"your_file.csv"为你实际的文件路径
```
3. 定义函数来提取作者名:
```python
def extract_authors(author_string):
authors = re.split(r'\|', author_string) # 使用正则表达式拆分由'|'分隔的作者名
return [author.strip() for author in authors] # 去除每个作者名两侧的空格
# 应用这个函数到每一行的authorship列
df['authors_list'] = df['authorships.raw_author_name'].apply(extract_authors)
```
4. 计算每个作者的出现次数:
```python
author_counts = df['authors_list'].explode().value_counts() # 使用explode展开嵌套列表,再计数
```
5. 结果展示:
```python
print(author_counts)
```
这样,你就得到了每个作者名字及其在所有行中出现的次数。如果有特定的需求,比如只统计最常见的几个作者,可以进一步对结果进行排序:
```python
top_authors = author_counts.head(10) # 取出现次数最多的前10个作者
print(top_authors)
```
别忘了替换`"your_file.csv"`为你的实际文件路径。如果你有其他问题或需要帮助,请告诉我。
阅读全文