我试图按组显示第一行(在这种情况下,Car是组)。但是,当我尝试使用下面的数据执行此操作时,我的代码显示Fred的时间为45(实际上是下一行中Betsy的时间)。我希望输出显示汽车A的第一个完整行和汽车B的第一个完整行,即使它们在时间列中包含np.nan。
有人可以帮助我了解我在做什么,为什么我的代码会像这样合并行信息?
谢谢!
import pandas as pd
test_df = pd.DataFrame({'Race':[1,1,1,2,2,2],'Car':['A','A','A','B','B','B'], 'Date':['5/1/2019','4/15/2019','3/1/2019','5/1/2019','2/1/2019','1/5/2019'],
'Driver':['Fred','Betsy','John','John','Frank','Frank'],'Time':[np.nan,45,46,47,44,43]})
test_df = test_df.sort_values(['Race', 'Car', 'Date'], ascending=[True, True, False]).groupby(['Car'], as_index=False).first()
答案 0 :(得分:0)
使用.head(1)
代替.first()
:
输出:
Race Car Date Driver Time
0 1 A 5/1/2019 Fred NaN
3 2 B 5/1/2019 John 47.0
两者之间的区别在于如何处理NaN:link。
答案 1 :(得分:0)
使用nth(0,dropna = False)代替first()
test_df = test_df.sort_values(['Race', 'Car', 'Date'], ascending=[True, True, False]).groupby(['Car'], as_index=False,).nth(0,dropna=False)
输出
Race Car Date Driver Time
0 1 A 5/1/2019 Fred NaN
3 2 B 5/1/2019 John 47.0