python pandas groupby:用于分组的删除列


print(my_df)

   A    B    C

0  1   20  0.1

1  1   30  0.2

2  1   40  0.3

3  2  200  0.7

4  2  300  0.8

5  2  400  0.9

that I group by column 'A'


grouped = my_df.groupby('A')

that I transform into a list:


grouped.apply(pd.Series.tolist)


A

1    [[1.0, 20.0, 0.1], [1.0, 30.0, 0.2], [1.0, 40....

2    [[2.0, 200.0, 0.7], [2.0, 300.0, 0.8], [2.0, 4...

However, I would like to get rid of the now redundant column 'A' values, to have


A

1    [[20.0, 0.1], [30.0, 0.2], [40....

2    [[200.0, 0.7], [300.0, 0.8], [4...

the grouped object contains all three columns:


grouped.obj.columns

Index(['A', 'B', 'C'], dtype='object')

but I cannot drop any of them:


grouped.drop('A')


AttributeError: Cannot access callable attribute 'drop' of 'DataFrameGroupBy' objects, try using the 'apply' method

how can I use drop with apply?


grouped.apply(pd.DataFrame.drop( ??? 

Thank you


Edit:


More concretely I am doing


grouped.apply(pd.Series.tolist).tolist()

with this I obtain


[[[1.0, 20.0, 0.1], [1.0, 30.0, 0.2], [1.0, 40.0, 0.3]], [[2.0, 200.0, 0.7], [2.0, 300.0, 0.8], [2.0, 400.0, 0.9]]]

but I would like to have


[[[20.0, 0.1], [30.0, 0.2], [40.0, 0.3]], [[200.0, 0.7], [300.0, 0.8], [400.0, 0.9]]]



阿晨1998
浏览 222回答 1
1回答

ITMISS

试试下面的代码,希望对你有帮助:df.set_index('A',inplace=True)df.groupby('A').apply(pd.Series.tolist)输出将是:A1       [[20.0, 0.1], [30.0, 0.2], [40.0, 0.3]]2    [[200.0, 0.7], [300.0, 0.8], [400.0, 0.9]]dtype: object
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python