我已经知道你可以从pandas中的字典对象中提取特定键,如果你已经知道键的确切值,但是如果你想在不知道值的情况下拉出字典的中值键值(或者在这种情况下) ,作者姓名)?
离。
author name: books: year:
fred how to fish 2010
how to bike 2012
how to skate 2009
bob sam I am 1990
george white fang 1980
animals and I 2000
ted a guide to computer programming 1984
harry the future queen 1812
所以我希望获得中间作者姓名。有五位作者,所以第三位作者是我想要的(乔治),只打印与他相关的所有数据。然后我最终还要打印他出版的书籍数量(两个)。我是否必须将字典对象转换回csv文件或其他东西?任何人都知道关于熊猫字典对象的提示或有用的教程会很棒,谢谢!
答案 0 :(得分:1)
如果您正在使用整数/浮点列,那么您可以使用中值方法:
In [11]: df['year:'].median()
Out[11]: 1995.0
如果您只想要“中间”项目,那么就接受(我不确定您想要用抽奖做什么......):
In [12]: df['author name:'].iloc[int(len(df) / 2.)]
Out[12]: 'george'
注意:在这种情况下,实际上 是抽奖...
或者你可以得到唯一的名字(按照给出的顺序,忽略重复的顺序),再次你不得不担心抽奖:
In [13]: names = df['author name:'].unique()
In [14]: names
Out[14]: array(['fred', 'bob', 'george', 'ted', 'harry'], dtype=object)
In [15]: names[int(len(names) / 2.)]
Out[15]: 'george'
*'bob'和'george'之间的中途是什么?
答案 1 :(得分:1)
我在完成一个教程后发现的解决方案(链接发布在答案底部)
df = pd.read_csv('location', etc...) #### data taken from csv file
stats1 = df.groupby('author name').agg({'books': [np.size]})
x = int(len(stats1) / 2.)
print stats1[(x-1):(x)]
基于本教程: http://www.gregreda.com/2013/10/26/using-pandas-on-the-movielens-dataset/