python - 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 文件,这样我就可以分别绘制他们的数据。请帮忙!
解决方案
您可以使用 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')
推荐阅读
- internationalization - Web SQL 查询返回的行数与 SQL 企业管理器查询不同
- excel - 如何在Excel中将文本转换为日期和时间
- python - 使用 Splinter 在表单中输入字符串
- sql - 我怎么知道flutter sqflite中是否存在行?
- broadcast - Modbus Master 发送数据无响应
- tsql - 在链接服务器中禁用触发器
- android - 无法在后台线程上调用观察
- tomcat - 如何防止 IntelliJ 更改 CATALINA_BASE
- server - 如何避免达到 youtube api 调用限制
- javascript - 使用渲染道具创建切换按钮以显示/隐藏子组件的问题