首页 > 解决方案 > Pandas 根据列中的值将数据帧拆分为多个 csv

问题描述

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

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 文件,这样我就可以分别绘制他们的数据。请帮忙!

标签: pythonpandasdataframecsv

解决方案


您可以使用 groupby:

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')

推荐阅读