python-3.x - 从具有关键年份和值列表的 txt 文件创建字典
问题描述
我有下面的txt文件
2014,STAR,105,234
2014,COMET,2877,1426
2014,ASTEROID,73,68
2014,PLANET,134,143
2014,"ACTIVE STARS,DEADSTARS",166,125
2015,STAR,69,24
2015,ASTEROID,59,32
2015,PLANET,42,13
2015,STAR,79,33
2015,BLACK HOLES,8,3
2015,"ACTIVE STARS,DEADSTARS",19,16
2015,ASTEROID,12,0
2016,STAR,120,47
2016,"ACTIVE STARS,DEADSTARS",4,1
2016,PLANET,14,12
2016,ASTEROID,21,1
我需要编写一个函数来读取文件并创建一个字典,其中键为年份和值,列表中的值是当年 3 列的总和和 txt 文件的 4 列的总和。
def file_read(fname):
with open(fname,'r') as document:
zip_lists=[]
dictionary1 ={}
tempYear=[]
tempSum3=[]
tempSum4=[]
for line in document:
#print(line)
line=line.strip()
alist=line.split(',')
tempYear.append(alist[0])
#print(alist[2])
if len(alist)==5:
tempSum3.append(int(alist[3]))
tempSum4.append(int(alist[4]))
else:
tempSum3.append(int(alist[2]))
tempSum4.append(int(alist[3]))
zip_lists=zip(tempSum3,tempSum4)
dictionary1=dict(zip(tempYear,zip_lists))
return dictionary1
解决方案
我不知道你到底想要什么。也许这对你有用:
import pandas as pd
def file_read(fname):
df = pd.read_csv(fname, sep=',')
df.columns = ['Year', 'col2', 'col3', 'col4']
sum_col3 = df.groupby('Year')['col3'].sum().to_list()
sum_col4 = df.groupby('Year')['col4'].sum().to_list()
n1 = zip(sum_col3, sum_col4)
n2 = zip(df['Year'].unique(), n1)
dictionary = {x[0]: list(x[1]) for x in n2}
return dictionary
输出:
{2014: [3250, 1762], 2015: [288, 121], 2016: [159, 61]}
推荐阅读
- reactjs - 如何在下面的代码中添加电子邮件验证?
- node.js - formData 没有在 reactJS/nodeJS 中向服务器发送数据
- javascript - 为什么会出现“未定义变量:req”的错误?
- reactjs - Redux vs Local State vs React 查询
- python - 在同级目录之间导入 Pythom 模块
- variables - 在 Pine Script 中的多个蜡烛之后将逻辑运算符从 TRUE 更改为 FALSE
- java - Spring JPA:使用多对多关系时如何插入/更新具有唯一列的新项目
- centos - 为什么“hostname”和“hostname -f”会返回对方的值?
- kubernetes - Kubernetes Webhook - 获取要创建的对象的规范
- android - ArCoreApk.getInstance().checkAvailability(this) 在设备上返回 SUPPORTED_APK_TOO_OLD 不受支持但为 arcore 安装了谷歌播放服务