我有一个csv
文件(不确定大小),我想阅读并进行一些处理。
这是csv
文件的结构:
User, Value
CN,500.00
CN,-250.00
CN,360.00
PT,200.00
PT,230.00
...
我想读取文件并获取第一个字段相同的每一行的总和。 我一直在尝试以下操作,只是试图为第一个字段标识一个值:
with open("Data.csv", newline='') as data:
reader = csv.reader(data)
for row in reader:
if row.startswith('CN'):
print("heres one")
此操作失败,因为startswith
不适用于列表对象。我也尝试过使用readlines()
。
编辑1:
我目前可以使用排序后的总和打印以下数据框对象:
Value
User
CN 3587881.89
D 1000.00
KC 1767783.99
REC 12000.00
SB 25000.00
SC 1443039.12
SS 0.00
T 9966998.93
TH 2640009.32
ls 500.00
我使用以下代码获得此输出:
mydata=pd.read_csv('Data.csv')
out = mydata.groupby(['user']).sum()
print(out)
Id现在喜欢能够为该对象编写if语句。像这样:
if out contains User 'CN'
varX = Value for 'CN'
因为这是现在的数据帧类型,所以我无法为特定用户将Value设置为变量。
答案 0 :(得分:1)
您可以执行以下操作:
import pandas as pd
my_data= pd.read_csv('Data.csv')
my_data.group_by('user').sum()
答案 1 :(得分:0)
您可以使用第一行元素:
import csv
with open("Data.csv", newline='') as data:
reader = csv.reader(data)
for row in reader:
if row[0].startswith('CN'):
print("heres one")
答案 2 :(得分:0)
使用collections.defaultdict
例如:
import csv
from collections import defaultdict
result = defaultdict(int)
with open(filename, newline='') as data:
reader = csv.reader(data)
next(reader)
for row in reader:
result[row[0]] += float(row[1])
print(result)
输出
defaultdict(<class 'int'>, {'CN': 610.0, 'PT': 430.0})