我有一个数据框,我想按列变量拆分,如下例所示:
gender height weight
male 42.8 157.5
male 41.3 165.6
female 48.4 144.2
我想要的结果是:
df_male
gender height weight
male 42.8 157.5
male 41.3 165.6
df_female
gender height weight
female 48.4 144.2
关键是我想成为 能够使用具有 5-25 个类别的变量来执行此操作。
我的想法是应该有一种方法可以遍历原始数据帧并吐出多个数据帧,但我对所有可能的解决方案持开放态度
请您参考如下方法:
以下将为 gender 列的每个值生成一个包含一个数据框的列表:
import io
import pandas as pd
data = io.StringIO('''\
gender height weight
male 42.8 157.5
male 41.3 165.6
female 48.4 144.2
''')
df = pd.read_csv(data, delim_whitespace=True)
dfs = [rows for _, rows in df.groupby('gender')]
dfs 是一个长度为 2 的列表,包含以下元素:
print(dfs[0])
# gender height weight
# 2 female 48.4 144.2
print(dfs[1])
# gender height weight
# 0 male 42.8 157.5
# 1 male 41.3 165.6
用 gender 列中的不同值和数据帧的值创建一个字典可能会更好:
dfs = [{gender: rows for gender, rows in df.groupby('gender')}
以下字典中的结果:
{'female': gender height weight
2 female 48.4 144.2,
'male': gender height weight
0 male 42.8 157.5
1 male 41.3 165.6}
