簡體   English   中英

如何使用python遍歷多個csv文件,如果值相同,則更新另一個值?

[英]How can I use python to iterate through multiple csv files and if a value is the same, update another value?

我正在嘗試遍歷幾個.csv文件,如果值相同,則將相關條目加起來。 如果值不相同,則將其添加為新行。

我當前的代碼是:

import pandas
s1011 = pandas.read_csv('goals/1011.csv', sep=',', usecols=(1,3,5))
s1011.dropna(how="all", inplace=True)
print s1011

s1112 = pandas.read_csv('goals/1112.csv', sep=',', usecols=(1,3,5))
s1112.dropna(how="all", inplace=True)
print s1112

s1213 = pandas.read_csv('goals/1213.csv', sep=',', usecols=(1,3,5))
s1213.dropna(how="all", inplace=True)
print s1213

目前,我對此了解不多。 它打印出3個標題,團隊,贊成和反對。 它打印出20支足球隊,他們進球數以及失球數。 我試過在python中使用merge ,但是它不適合,因為它只能制作一張大表。

我想做的是打開多個csv文件,遍歷列表,如果團隊相同,則將每個文件的目標和目標加在一起。 如果之前尚未輸入團隊 ,請添加新行並添加新條目。

使用python可以嗎?

編輯:

目前正在打印

反對隊

曼聯86 43

曼城83 45

切爾西89 39

等20個團隊。 因此,我想通過在多個賽季中為每個團隊增加目標數來更新贊成和反對條目。 由於每個賽季不會有20支球隊,因此如果以前沒有一支球隊加入聯賽,我想添加新的條目。

假設您具有以下csv:

df1

反對隊

曼聯86 43

曼城83 45

切爾西89 39

df2

反對隊

曼聯88 45

曼城85 47

ICantNameATeam 91 41

您可以先使用pandas.concat將它們堆疊:

df_concat = pandas.concat([df1, df2], axis=0)

這會給你:

df_concat

反對隊

曼聯86 43

曼城83 45

切爾西89 39

曼聯88 45

曼城85 47

ICantNameATeam 91 41

然后,您可以使用dataframe.groupby求和:

df_sum = df_concat.groupby('Team').sum().reset_index()

這將根據唯一的團隊名稱對數據框進行分組,並取每一列的總和。

這是一種方法:

  1. 使用Pandas將文件的標識號附加到每個數據框中的“針對”列(即For-1011,For-1112,For-1213)。
  2. 在“團隊”上使用完全外部聯接將所有行帶入新的數據幀。
  3. 根據需要對列求和: df[For-total] = df[For-1011] + df[For-1112] + df[For-1213]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM