user7311536 user7311536 - 3 years ago 233
Python Question

how extract a vector from groupby pandas in python

I have a DataFrame using pandas:

one two three

1 2 1
4 1 1
2 2 1
3 1 2
20 2 2


Now, I would extract the a vector by grouping 'three'.
Basically, I should obtain vectors from the 'two' column based on grouping "three":

groupby('three')
a=[2,1,2]
b=[1,2]


thanks a lot

Answer Source

You can use groupby:

s = df.groupby('three')['two'].apply(list)
print (s)
three
1    [2, 1, 2]
2       [1, 2]
Name: two, dtype: object

a = s.loc[1]
b = s.loc[2]
print (a)
[2, 1, 2]

print (b)
[1, 2]

If need nested lists:

L = df.groupby('three')['two'].apply(list).tolist()
print (L)
[[2, 1, 2], [1, 2]]

Another possible solutions:

L = [list(x) for i, x in df.groupby('three')['two']]
print (L)
[[2, 1, 2], [1, 2]]

L = [x.tolist() for i, x in tuple(df.groupby('three')['two'])]
print (L)
[[2, 1, 2], [1, 2]]
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download