我有一个数据框,我想通过列变量进行拆分,如下例所示:
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个类别的变量执行此操作。
我的想法是应该有一种循环原始数据框并吐出多个数据帧的方法,但我对所有可能的解决方案开放
答案 0 :(得分:5)
以下内容将生成一个列表,其中包含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}