我想按每个运动员的名字分组,从每个人那里获得最小年龄,然后按照年龄从最小到最大的顺序对其进行排序,但是在我的数据中,还存在一些Nan值,我得到了FutureWarning: 将类似列表的标签传递给.loc或[]且缺少标签会引发 将来会出现KeyError,您可以使用.reindex()作为替代。 是否可以跳过带有Nan值的记录?
这是我的代码,tab是我从老师那里得到的csv文件中读取的表:
tabYoungest=tab.sort_values(by='Age')
tabYoungestgesamt=tabYoungest.loc[tabYoungest.groupby('Name')['Age'].idxmin()]
tabYoungestgesamt.head(20)
答案 0 :(得分:2)
IIUC可以通过使用.sort_values
+ groupby
+ head
轻松实现。输出将是每个名称的最小年龄,从最小到最大排序,所有名称的末尾都缺少年龄。
import pandas as pd
import numpy as np
np.random.seed(1)
tab = pd.DataFrame({'Name': list('ABCDEFGHIJ')*100,
'Age': np.random.normal(50,5,1000)})
tab.loc[1000] = ['Z', np.NaN]
tab = tab.sort_values('Age')
tab.groupby('Name').head(1)
Name Age
892 C 34.731178
661 B 36.045018
367 H 36.087328
738 I 36.508191
976 G 36.679370
589 J 37.418481
414 E 37.932485
5 F 38.492307
973 D 38.508971
790 A 39.568047
1000 Z NaN