使用Python对csv d进行分组

2024-05-29 02:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,其中有数千个条目需要分组。在下面的示例中,我需要根据River名称将每一行分成多个组,以便以后可以根据它们的组重新格式化信息。

River Name, Branch, Length
Catnip, 1, 2145.30
Peterson, 2, 24.5
Catnip, 3, 15.4
Fergerson, 1, 5.2
Catnip, 1, 88.56
Peterson, 2, 6.45

我唯一能想到的信息分组方法是:

  1. 使用python读取csv并创建一个仅包含唯一河流名称的列表。
  2. 基于独特的河流名称创建新的个人csv,例如Peterson.csv, Catnip.csv。
  3. 使用python读取原始csv,并根据正在读取的行上的river名称,将该行写入相应的.csv文件。e、 g行Catnip,12145.30将写入Catnip.csv

我不认为这是一个有效的方法来实现这一点,因为它给了我大约1500个csv,将需要开放和编写,但我在我的python知识的极限。如果有人能提供更好的方法,我们将不胜感激。


Tags: 文件csv方法name名称branch信息示例
3条回答

python pandas可以处理csv数据集。我没有做过任何相关的事情,但最好先检查一下熊猫。

http://pandas.pydata.org/pandas-docs/stable/

您可以使用pandas库。 用逗号分隔符读取csv文件

import pandas as pd
df =  pd.read_csv('yourfile.csv',sep=',')

Df是pandas中的dataframe,用于操作导入的csv文件。

pandas会自动将csv文件分区为列/行。 您只需使用df['River Name']访问River Name列。

您还可以简单地使用csv模块并将结果保存到字典中。我列举了读者跳过第一行(我相信一定有更简单的方法…)。然后读取每一行并将值赋给riverbranchlength。如果river不在字典中,那么它用空列表初始化它。然后将branchlength的元组对附加到字典中。

rivers = {}
with open('rivers.csv', mode='rU') as f:
    reader = csv.reader(f, delimiter=',')  # dialect=csv.excel_tab?
    for n, row in enumerate(reader):
        if not n:
            # Skip header row (n = 0).
            continue  
        river, branch, length = row
        if river not in rivers:
            rivers[river] = list()
        rivers[river].append((branch, length))

>>> rivers
{'Catnip': [('1', '2145.3'), ('3', '15.4'), ('1', '88.56')],
 'Fergerson': [('1', '5.2')],
 'Peterson': [('2', '24.5'), ('2', '6.45')]}

相关问题 更多 >

    热门问题