Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(3.7)CSV按字段值排序/求和_Python - Fatal编程技术网

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我还没有把它作为一种选择,但我现在会检查