这个代码怎么写,现有txt文件“电影信息.txt”,其中三列分别为电影名称、导演和演员表,之间用分号分隔(同一个电影可能会有多个演员,每个演员姓名之间使用逗号分隔;同一部电影也可能有多个导演,多个导演之间用逗号分隔),还有一个xlsx文件“电影信息统计.xlsx",第一列是电影编号,第二列是电影名称,第三列为导演名称,第四列为演员名单。统计每个演员参演的电影数量和分别有哪些电影,将结果按参演电影数量降序排列,并按照下列要求填入sheet中: 1. 在“电影信息统计.xlsx”文件中新增一个名为“演员参演统计”的sheet,统计每个演员参演的电影数量和参演电影列表。 2. 第一列填写演员名称,第二列填写演员参演电影数量,第三列填写演员参演电影列表。同一演员参演的多部电影在同一单元格中以逗号(,)分隔。 3. 按演员参演电影数量降序排列填入sheet,参演数量相同的演员按姓名升序排列。要求使用函数
时间: 2024-02-12 12:05:18 浏览: 341
好的,这是一个比较复杂的任务,需要使用到多个Python库和函数。首先,我们需要读取txt文件中的数据,并将其存储为一个字典类型,以便后续操作。接下来,我们需要读取xlsx文件,并对其中的数据进行处理和统计,并将统计结果写入到新的sheet中。这个过程可以使用pandas库来完成。具体代码如下:
```python
import pandas as pd
# 读取txt文件并转换为字典类型
with open('电影信息.txt', 'r', encoding='utf-8') as f:
movies = {}
for line in f.readlines():
data = line.strip().split(';')
name = data[0]
directors = data[1].split(',')
actors = data[2].split(',')
for director in directors:
if director not in movies:
movies[director] = {'directed': [name], 'acted': []}
else:
movies[director]['directed'].append(name)
for actor in actors:
if actor not in movies:
movies[actor] = {'directed': [], 'acted': [name]}
else:
movies[actor]['acted'].append(name)
# 读取xlsx文件并统计演员参演电影数量和列表
df = pd.read_excel('电影信息统计.xlsx')
actors = []
counts = []
movies_list = []
for actor, data in movies.items():
count = len(data['acted'])
movie_list = ','.join(data['acted'])
actors.append(actor)
counts.append(count)
movies_list.append(movie_list)
result = pd.DataFrame({'演员名称': actors, '参演电影数量': counts, '参演电影列表': movies_list})
result = result.sort_values(['参演电影数量', '演员名称'], ascending=[False, True])
# 将统计结果写入新的sheet中
with pd.ExcelWriter('电影信息统计.xlsx', mode='a') as writer:
result.to_excel(writer, sheet_name='演员参演统计', index=False)
```
代码中我们使用了with语句,这样可以确保文件在使用完成后自动关闭,避免文件泄露和资源浪费。同时,我们也使用了pandas库的DataFrame来处理xlsx文件中的数据,这样可以大大简化代码和提高效率。
阅读全文
相关推荐











