现有txt文件“电影信息.txt”,其中三列分别为电影名称、导演和演员表,之间用分号分隔(同一个电影可能会有多个演员,每个演员姓名之间使用逗号分隔;同一部电影也可能有多个导演,多个导演之间用逗号分隔)任务:演员参演电影统计 统计每个演员参演的电影数量和分别有哪些电影,将结果按参演电影数量降序排列,并按照下列要求填入sheet中: 1. 在“电影信息统计.xlsx”文件中新增一个名为“演员参演统计”的sheet,统计每个演员参演的电影数量和参演电影列表。 2. 第一列填写演员名称,第二列填写演员参演电影数量,第三列填写演员参演电影列表。同一演员参演的多部电影在同一单元格中以逗号(,)分隔。 3. 按演员参演电影数量降序排列填入sheet,参演数量相同的演员按姓名升序排列。。要求对任务定义函数
时间: 2024-02-12 13:04:29 浏览: 174
Excel2021工作表中如何导入.txt文件.docx
好的,根据你的要求,我为您定义一个函数来完成这个任务。代码如下:
```python
import pandas as pd
def actor_movie_stats(file_path):
# 读取电影信息文件
df = pd.read_csv(file_path, sep=';', header=None, names=['电影名称', '导演', '演员表'])
# 将演员表按逗号分隔成列表
df['演员列表'] = df['演员表'].str.split(',')
# 将多个导演按逗号分隔成多行
df = df.explode('导演')
# 将多个演员按逗号分隔成多行
df = df.explode('演员列表')
# 统计每个演员参演的电影数量和参演电影列表
actor_stats = df.groupby('演员列表')['电影名称'].agg(['count', ', '.join]).reset_index()
# 对演员参演电影数量降序排列,参演数量相同的演员按姓名升序排列
actor_stats = actor_stats.sort_values(by=['count', '演员列表'], ascending=[False, True])
# 将结果写入Excel文件
with pd.ExcelWriter('电影信息统计.xlsx', mode='a') as writer:
actor_stats.to_excel(writer, sheet_name='演员参演统计', index=False)
```
该函数使用了pandas库来处理数据,具体步骤如下:
1. 使用read_csv函数读取电影信息文件,指定分隔符为分号,指定列名为['电影名称', '导演', '演员表']。
2. 使用str.split函数将演员表按逗号分隔成列表,创建新列'演员列表'。
3. 使用explode函数将多个导演和演员按逗号分隔成多行。
4. 使用groupby函数对演员列表进行分组,统计每个演员参演的电影数量和参演电影列表,使用agg函数分别对电影数量和参演电影列表进行聚合操作。
5. 对结果进行降序排列,先按演员参演电影数量降序排列,再按照演员姓名升序排列。
6. 使用ExcelWriter将结果写入Excel文件中的“演员参演统计”sheet中。
你只需要调用函数并传入电影信息文件的路径,就可以完成这个任务了。比如:
```python
actor_movie_stats('电影信息.txt')
```
注意:该函数会将结果写入到已存在的Excel文件中,如果没有该文件,会自动创建。如果需要每次运行都创建新的Excel文件,请先删除原有文件。
阅读全文