Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用条件逻辑从数据创建多个列表_Python_Python 3.x_Pandas_Loops - Fatal编程技术网

Python 使用条件逻辑从数据创建多个列表

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中的给定值。因此,我的输

我有一个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
目前,我正在尝试建立一个循环来实现这一点,比如:

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