Python 按列变量拆分数据帧

Python 按列变量拆分数据帧,python,pandas,filtering,Python,Pandas,Filtering,我有一个数据框,我想用一个列变量拆分它,如下例: gender height weight male 42.8 157.5 male 41.3 165.6 female 48.4 144.2 我期望的结果是: df_男性 gender height weight male 42.8 157.5 male 41.3 165.6 gender height weight female 48.4 144.2 df_女性 gender h

我有一个数据框,我想用一个列变量拆分它,如下例:

gender height weight
male     42.8  157.5
male     41.3  165.6
female   48.4  144.2
我期望的结果是:

df_男性

gender height weight
male     42.8  157.5
male     41.3  165.6
gender  height  weight
female    48.4   144.2
df_女性

gender height weight
male     42.8  157.5
male     41.3  165.6
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':性别身高体重
2女48.4 144.2,
“男性”:性别身高体重
0男42.8 157.5
1男41.3 165.6}

以下内容将生成一个列表,其中包含
性别
列中每个值的一个数据帧:

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':性别身高体重
2女48.4 144.2,
“男性”:性别身高体重
0男42.8 157.5
1男41.3 165.6}
按(逻辑)条件选择行称为筛选按(逻辑)条件选择行称为筛选