python - pandas:将 100 多个变量融合到 100 多个新数据帧中
问题描述
stackoverflow 很新,如果格式看起来很奇怪,请多多包涵。
我有一大组数据,其中包含 100 多列数据,其结构如下:
countrya countryb 年份 variable1 variable2 ...... variable100
我想将 100 个变量分成 100 个新数据帧并将它们保存到 csvs 中。
下面是我用于创建 1 个新 csv 的代码。
dfm1=pd.melt(df, id_vars=['countrya','countryb','year'], value_vars=['variable1'],
value_name='variable1')
dfm1.drop('variable',axis=1)
dfm1.to_csv('newdf1.csv')
我怎样才能自动化这个过程?谢谢!
解决方案
这是一种方法。首先,创建数据框。
import pandas as pd
df = pd.DataFrame({
'country_a': [1, 2, 3],
'country_b': [4, 5, 6],
'year': [2018, 2019, 2020],
'var_a': ['a', 'b', 'c'],
'var_b': ['x', 'y', 'z']
})
print(df)
country_a country_b year var_a var_b
0 1 4 2018 a x
1 2 5 2019 b y
2 3 6 2020 c z
其次,使用您的列名遍历字段。
base_fields = df.columns[:3].to_list() # columns in every file
var_fields = df.columns[3:] # var_a, var_b, ...
for var_field in var_fields:
file_name = f'{var_field}.csv'
with open(file_name, 'wt') as handle:
fields = base_fields + [var_field]
df.loc[:, fields].to_csv(handle)
print(f'wrote {fields} to {file_name}')
wrote ['country_a', 'country_b', 'year', 'var_a'] to var_a.csv
wrote ['country_a', 'country_b', 'year', 'var_b'] to var_b.csv
^ ^
last field and file name change
推荐阅读
- css - 我的页面没有反映我所做的任何 CSS 样式更改
- c# - 根据谁登录(基于 AD auth)锁定我的应用程序的某些功能
- windows - 尝试从 GitHub 克隆时出现权限被拒绝(公钥)错误
- c++ - 有没有办法在使用 Booth 算法的二进制乘法期间捕获溢出/下溢?
- android - 如何使用 Amazon Voice Service 或 Alexa 对我的应用进行语音查询
- python - 是否有 Python 函数可以根据条件过滤并将二进制值分配给数据集中的列?
- excel - 仅对具有前缀字母的单元格求和
- angular - @angular/service-worker/src/module.d.ts (30,9):“ModuleWithProviders”类型不是通用的
- android - 如何在应用程序运行时连续检查互联网连接
- node.js - 如何修复“未捕获的错误:模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):”