如何在保持数据类型的同时在数据框单元格中返回单个

时间:2018-10-05 15:07:21

标签: python pandas numpy dataframe indexing

所以我有一个数据框,基本上每个单元格中都有一个字典。我的索引值是类似[[10,0),(10,),(30,0),(25,2)]的元组列表,并且列只是从1开始编号,然后从此处开始递增。

我想尝试查找索引值和列号,并使其仅返回存储在该单元格中的字典,但保持字典数据类型。我尝试过:

df.loc[[(10,0),(10,),(30,0),(25,2)],[1]].iloc[0] 

但是看起来那只是返回一个系列,而我只是得到系列中的第一项。

编辑:

编辑

我试图使它尽可能简单,但我意识到这可能会更加令人费解。

我有两个数据。 1包含值,2包含结果字典。我想从df 1中的每一列取最高值,并返回位于df2中相同索引值的相应字典。

因此,例如:第1列的最高值为.3818,位于ix val: [(10,),(3,),(0,),(0,10)] 所以id喜欢只返回存储在df2中该索引值的第1列中的字典,所以: {“总净利润”:1449.99999999996,“最大博士数。”

这是df1和df2的样子:

                                     1         2    ...            4         5
[(10,), (2,), (0,), (0, 10)] -0.712821 -0.716000    ...    -0.392000 -0.952703
[(10,), (3,), (0,), (0, 10)]  0.381818  0.209091    ...     1.427273  0.115578
[(15,), (2,), (0,), (0, 10)] -0.929577 -0.527426    ...     0.033755 -0.219409
[(15,), (3,), (0,), (0, 10)] -1.000000 -0.768392    ...    -0.316076 -0.662125
[(20,), (2,), (0,), (0, 10)] -0.863118 -0.535948    ...    -0.513072 -0.735294


                                                                              1                        ...                                                                          5
[(10,), (2,), (0,), (0, 10)]  {'Total Net Profit': -750.0000000001708, 'Max ...                        ...                          {'Total Net Profit': -9900.00000000016, 'Max D...
[(10,), (3,), (0,), (0, 10)]  {'Total Net Profit': 1449.99999999996, 'Max Dr...                        ...                          {'Total Net Profit': -7400.000000000018, 'Max ...
[(15,), (2,), (0,), (0, 10)]  {'Total Net Profit': 200.00000000003115, 'Max ...                        ...                          {'Total Net Profit': -3800.0000000000255, 'Max...
[(15,), (3,), (0,), (0, 10)]  {'Total Net Profit': -1400.0000000000769, 'Max...                        ...                          {'Total Net Profit': -7150.000000000035, 'Max ...
[(20,), (2,), (0,), (0, 10)]  {'Total Net Profit': -400.0000000001336, 'Max ...                        ...                          {'Total Net Profit': -3500.0000000000146, 'Max...

1 个答案:

答案 0 :(得分:0)

您需要pd.DataFrame.idxmax,请尝试:

df2.loc[df1['1'].idmax(),1]