我有一个看起来像这样的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
我试图创建与var1中给定值相对应的var2中每个值集的列表。因此,我的输出将如下所示:
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())
尽管似乎不是在此处迭代创建列表。也许有更好的方法可以实现我的目标?
问题来源:stackoverflow
使用groupby
以及join
聚合和add_prefix
重命名索引:
df.groupby('var1')['var2'].agg(', '.join).add_prefix('list_')
[出]
var1
list_0 a, b, c, d, z
list_1 t, a
list_2 p
list_60 c
Name: var2, dtype: object
*或对于python列表使用list
聚合: df.groupby('var1')['var2'].agg(list).add_prefix('list_')
[出]
var1
list_0 [a, b, c, d, z]
list_1 [t, a]
list_2 [p]
list_60 [c]
Name: var2, dtype: object
* 更新资料
我想我明白了您要达到的目标,我的强力建议是使用pythondict
而不是“ independent lits”-键为list_0
,list_1
等。
例
d = df.groupby('var1')['var2'].agg(list).add_prefix('list_').to_dict()
print(d['list_0'])
[出]
['a', 'b', 'c', 'd', 'z']
如果您绝对坚持使用独立列表,则使用globals()
对象,并使用for
循环进行更新(为避免疑问,我不建议使用此方法-请查看此问题以获取更多信息):
s = df.groupby('var1')['var2'].agg(list).add_prefix('list_')
for var, lst in s.iteritems():
globals()[var] = lst
现在,您应该具有带有关联变量名称的独立列表。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。