Skip to main content
 首页 » 编程设计

python之按列变量拆分 Pandas 数据框

2025年05月04日24duanxz

我有一个数据框,我想按列变量拆分,如下例所示:

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}