繁体   English   中英

Pandas 根据列中的值将数据帧拆分为多个 csv

[英]Pandas split data frames into multiple csv's based on value from column

我有一个与此类似的问题,但我需要一些进一步的步骤。 问题是我的文件包含 50k+ 行。 每行有 4 个值“Indicator”、“Country”、“Date”和“value”。 我想根据国家拆分我的 CSV。 我不知道有多少个国家,所以所有具有相似名称的国家都应该在一个 CSV 文件中,依此类推。 CSV 文件也没有排序。 我正在使用 pandas,这是我目前的代码:

import pandas as pd
def read_csvfile():
    df = pd.read_csv('ebola_data_db_format.csv', sep= ',')
    
    #remove the unneeded columns
    df = df[df['Country'] != "Guinea 2"]  
    df = df[df['Country'] != "Liberia 2"]
   
    #reset the index
    df.reset_index(drop=True, inplace=True)
    print (df.head(10))

read_csvfile()

我希望能够为每个国家/地区创建一个 CSV 文件,这样我就可以分别 plot 他们的数据。 请帮助!

您可以使用分组:

country_dfs = {k:v for k,v in df.groupby('Country')}

要将它们保存在几个 csv 文件中:

for k, v in df.groupby('Country'):
    v.to_csv(f'{k}.csv')

或来自country_dfs

for k, v in country_dfs.items():
    v.to_csv(f'{k}.csv')

你可以在这里使用dictionary comprehension

dfs_dict = {j: df[df['Country'] == j] for j in df['Country'].unique()}

要在country cdv 中保存country-wise数据,请执行以下操作:

for k, v in dfs_dict.items():
    v.to_csv('{}.csv'.format(k))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM