pandas统计数据里作者列中括号里的国家名出现次数,没有中括号则表示是中国作者
时间: 2023-12-29 08:04:22 浏览: 29
可以使用 Pandas 中的 apply 方法结合正则表达式实现:
```python
import pandas as pd
import re
# 示例数据
df = pd.DataFrame({
'author': ['John (USA)', 'Lily (China)', 'Tom', 'Jerry (Canada)', 'David (China)']
})
# 定义函数,使用正则表达式匹配国家名
def count_country(x):
pattern = r'\((\w+)\)'
match = re.search(pattern, x)
if match:
return match.group(1)
else:
return 'China'
# 对 author 列应用函数,统计国家名出现次数
result = df['author'].apply(count_country).value_counts()
print(result)
```
输出结果为:
```
China 3
Canada 1
USA 1
Name: author, dtype: int64
```
其中,China 出现 3 次,表示有 3 个中国作者;Canada 和 USA 各出现 1 次,表示有 1 个加拿大作者和 1 个美国作者。
相关问题
pandas统计数据里作者列[]里的国家名出现次数,没有[]则表示是中国作者
假设你的数据存储在DataFrame中,作者列名为"Author",则可以使用以下代码来统计国家名出现的次数:
```
import pandas as pd
# 读取数据
df = pd.read_csv('your_data.csv')
# 统计国家名出现的次数
country_counts = df['Author'].str.extract('\[(.*?)\]', expand=False).value_counts()
# 如果没有[]则认为是中国作者
china_count = df['Author'].str.contains('\[.*?\]').value_counts()[False]
print('国家名出现次数:')
print(country_counts)
print('中国作者数量:')
print(china_count)
```
其中,`extract`方法用于提取出方括号中的内容,`value_counts`方法用于统计每个国家名出现的次数。如果`contains`方法返回`False`,则表示该作者不是国外作者,即为中国作者。
pandas获取数据里作者列中括号里的国家名
可以使用 pandas 中的 `str.extract()` 方法来提取作者列中括号里的国家名。例如,假设数据集中有一个名为 `df` 的 pandas DataFrame,其中包含一个名为 `Author` 的列,该列包含作者姓名和国籍,格式为 `"Author Name (Country)"`,则可以使用以下代码提取国籍信息:
``` python
df['Country'] = df['Author'].str.extract('\((.*?)\)', expand=False)
```
上述代码中的正则表达式 `\((.*?)\)` 表示匹配以左括号开头、右括号结尾的字符串,并提取其中的内容。`expand=False` 参数表示不将结果转换为 DataFrame 形式,而是保留为 Series 形式。执行上述代码后,DataFrame 中会新增一列名为 `Country`,其中包含从 `Author` 列中提取出来的国籍信息。