Python(3.7)CSV按字段值排序/求和
我有一个Python(3.7)CSV按字段值排序/求和,python,Python,我有一个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 re
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:
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)
我当前可以打印以下具有排序总和的dataframe对象:
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)
我现在希望能够为这个对象编写if语句。比如:
if out contains User 'CN'
varX = Value for 'CN'
因为这现在是一种数据帧类型,所以我无法为特定用户将值设置为变量。您可以使用第一行元素:
导入csv
以open(“Data.csv”,换行符=“”)作为数据:
reader=csv.reader(数据)
对于读取器中的行:
如果第[0]行开始,则使用('CN'):
打印(“这里有一个”)
您可以执行以下操作:
import pandas as pd
my_data= pd.read_csv('Data.csv')
my_data.group_by('user').sum()
使用
collections.defaultdict
Ex:
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})
defaultdict(,{'CN':610.0,'PT':430.0})
你试过使用熊猫吗?@yatu我还没有把它作为一种选择,但我现在会检查