【发布时间】:2016-07-18 13:24:44
【问题描述】:
我有一个数据框:
bq_selection_id bq_balance bq_market_id bq_back_price
0 45094462 185.04 155 1.87
1 45094462 185.04 155 1.97
2 45094463 185.04 155 3.05
3 45094463 185.04 156 3.05
4 45094464 185.04 156 5.80
5 45094464 185.04 156 5.80
6 45094466 185.04 157 200.00
7 45094466 185.04 157 200.00
8 45094465 185.04 157 NaN
9 45094465 185.04 157 NaN
我希望每组有两个额外的列 second_lowest,none_values,groupby 市场 id。市场 id 155 second_lowest 1.97 的另一个词,并且没有 NaN 值,因此 none_values 为 False。我想得到类似的东西:
bq_selection_id bq_balance bq_market_id bq_back_price second_lowest none_val
0 45094462 185.04 155 1.87 1.97 False
1 45094462 185.04 155 1.97 1.97 False
2 45094463 185.04 155 3.05 1.97 False
3 45094463 185.04 156 3.05 5.80 False
4 45094464 185.04 156 5.80 5.80 False
5 45094464 185.04 156 6.40 5.80 False
6 45094466 185.04 157 1.00 1.70 True
7 45094466 185.04 157 1.70 1.70 True
8 45094465 185.04 157 NaN 1.70 True
9 45094465 185.04 157 NaN 1.70 True
你能帮我解决这个问题吗?
【问题讨论】:
-
您能否澄清一下您是如何获得
1.70的bq_market_id == 157的? -
基本上我用 .groupby('bq_market_id ') 将所有值分组,然后在组中取下一个最小值/最小值,id 为 157 (1.00,1.70,NaN,NaN) 所以最小值值为 1.00,第二小为 1.70
标签: python python-2.7 python-3.x pandas