繁体   English   中英

在 Pandas 中为每个唯一值创建一个 Dataframe

[英]Create One Dataframe per unique Values in Pandas

你好世界

我想从一列中为每个唯一值创建一个数据框。

下面是我的初始数据框。

Date     Name     Value
01/19     Jean        15
01/19     Jean        15
01/17     Bean        15
01/16     Bean        15
01/19     Jean        15

我找到了一些关于基于唯一值创建数据帧的答案,例如: 从一列中的唯一值创建 Pandas数据帧。

使用以下代码,我将所有内容都包含在列表中。

dfa = [x for _, x in df.groupby('name')]
dfa[0]

output 
Date     Name     Value
01/19     Jean        15
01/19     Jean        15
01/19     Jean        15
Date     Name     Value
01/17     Bean        15
01/16     Bean        15    

但是,我想自动分配数据框的名称而不是这样做:

df_Jean= df[0]
df_Bean= df[1]

以下是预期的输出

df_Jean
Date     Name     Value
01/19     Jean        15
01/19     Jean        15
01/19     Jean        15

这是可能的,但在 python 中不推荐

for i, g in df.groupby('name'):
    globals()['df_' + str(i)] =  g

或者:

for i, g in df.groupby('name'):
    globals()[f'df_{i}'] =  g

更好的是使用dict

d = dict(tuple(df.groupby("Name")))

print (d['Jean'])
print (d['Bean'])

你应该使用字典:

d = {k:v for k, v in df.groupby("Name")}

然后您可以简单地将名称作为键传递:

print (d["Jean"])

    Date  Name  Value
0  01/19  Jean     15
1  01/19  Jean     15
4  01/19  Jean     15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM