Python 使用条件逻辑从数据创建多个列表
我有一个df,看起来像这样:Python 使用条件逻辑从数据创建多个列表,python,python-3.x,pandas,loops,Python,Python 3.x,Pandas,Loops,我有一个df,看起来像这样: var1 var2 var3 0 a 1 0 b 7 0 c 5 0 d 4 0 z 8 1 t 9 1 a 2 2 p 3 .. .. .. 60 c 3 list_0: a, b, c, d, z list_1: t, a list_2: p list_60: c 我试图创建var2中的每一组值的列表,这些值对应于var1中的给定值。因此,我的输
var1 var2 var3
0 a 1
0 b 7
0 c 5
0 d 4
0 z 8
1 t 9
1 a 2
2 p 3
.. .. ..
60 c 3
list_0: a, b, c, d, z
list_1: t, a
list_2: p
list_60: c
我试图创建var2中的每一组值的列表,这些值对应于var1中的给定值。因此,我的输出将如下所示:
var1 var2 var3
0 a 1
0 b 7
0 c 5
0 d 4
0 z 8
1 t 9
1 a 2
2 p 3
.. .. ..
60 c 3
list_0: a, b, c, d, z
list_1: t, a
list_2: p
list_60: c
目前,我正在尝试建立一个循环来实现这一点,比如:
for i in range(df.var2.max()):
var2_i = (x for x in df.var1.to_list())
虽然列表似乎不是在这里迭代创建的。也许有更好的方法来实现我的目标?与联接聚合一起使用并重命名索引:
df.groupby('var1')['var2'].agg(', '.join).add_prefix('list_')
[外]
对于python列表,请使用列表聚合:
df.groupby('var1')['var2'].agg(list).add_prefix('list_')
[外]
使现代化
我想我明白了您想要实现的目标,我的强烈建议是使用python dict而不是独立的lit,键是list_0、list_1等等
范例
[外]
如果您绝对坚持使用独立列表,那么请使用globals对象,并使用for循环进行更新,以避免产生疑问,我不建议使用此方法-请查看以了解更多信息:
现在,您应该拥有具有关联变量名称的独立列表 与联接聚合一起使用并重命名索引:
df.groupby('var1')['var2'].agg(', '.join).add_prefix('list_')
[外]
对于python列表,请使用列表聚合:
df.groupby('var1')['var2'].agg(list).add_prefix('list_')
[外]
使现代化
我想我明白了您想要实现的目标,我的强烈建议是使用python dict而不是独立的lit,键是list_0、list_1等等
范例
[外]
如果您绝对坚持使用独立列表,那么请使用globals对象,并使用for循环进行更新,以避免产生疑问,我不建议使用此方法-请查看以了解更多信息:
现在,您应该拥有具有关联变量名称的独立列表 因此,df.groupby返回的是一个groupby对象,而不是独立列表。@LMGagne请参阅更新的最后一部分-使用globals object谢谢您更新了答案,现在更清楚了,我很欣赏另一篇文章的链接,它概述了为什么我真正想要的东西最终可能会把我搞砸。因此,df.groupby返回一个groupby对象,不是独立的列表。@LMGagne请参阅更新的最后一部分-使用globals对象谢谢您更新了答案,现在更清楚了,我感谢您提供另一篇文章的链接,该文章概述了为什么我真正想要的东西最终可能会把我搞砸。
s = df.groupby('var1')['var2'].agg(list).add_prefix('list_')
for var, lst in s.iteritems():
globals()[var] = lst