Dictionary 使用pandas从字典中按位置拉出键

Dictionary 使用pandas从字典中按位置拉出键,dictionary,pandas,ipython,Dictionary,Pandas,Ipython,我已经知道,如果您已经知道键的确切值,那么可以从pandas中的dictionary对象中提取特定键,但是如果您想在不知道值(或者在本例中是作者姓名)的情况下提取字典的中位数键的值,该怎么办 前 所以我想知道作者姓名的中位数。有五位作者,所以第三位作者就是我想要的(乔治),只需打印与他相关的所有数据。最后我还想打印他出版的书的数量(两本)。我是否必须将dictionary对象转换回csv文件或其他文件?任何人都知道关于熊猫字典对象的提示或有用的教程将非常好,谢谢 如果您使用的是整数/浮点列,则可

我已经知道,如果您已经知道键的确切值,那么可以从pandas中的dictionary对象中提取特定键,但是如果您想在不知道值(或者在本例中是作者姓名)的情况下提取字典的中位数键的值,该怎么办


所以我想知道作者姓名的中位数。有五位作者,所以第三位作者就是我想要的(乔治),只需打印与他相关的所有数据。最后我还想打印他出版的书的数量(两本)。我是否必须将dictionary对象转换回csv文件或其他文件?任何人都知道关于熊猫字典对象的提示或有用的教程将非常好,谢谢

如果您使用的是整数/浮点列,则可以使用中值法:

In [11]: df['year:'].median()
Out[11]: 1995.0
但是,对于一列字符串来说,这并不是很好的定义,至少使用普通定义*。 如果你只想要“中间”项,那么就拿着它(我不确定你想用抽签做什么…):

注:在这种情况下,实际上是一个平局

或者,您可以获得唯一的名称(按照给定的顺序,忽略顺序错误的重复),同样,您需要担心绘图:

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”之间有什么区别?

我在阅读教程后找到的解决方案(答案底部有链接)

根据本教程的内容:

哈哈,介于鲍勃和乔治之间的可能是类似“obgeo”或“bobgeorge”->“e”。快速提问-通过使用'names=df['author name:'].unique()',这会不会除去作者写的所有书籍,除了他名字的第一个实例之外?@user2635779是的,完全正确。。。不清楚你想要什么,所以就把它扔了出去。我回答了我自己的问题-所以这一个使用了数组,这很好,但我将发布一个更简单的解决方案,使用pandas Groupby函数引起的.dict作为一个单独的答案,以防其他人好奇。@user2635779酷,别忘了向上投票,现在你有了这个能力:)我想你可以直接做df.groupby()['books'].size(),但要注意,这两个解决方案返回的顺序可能与它们在df中出现的顺序不同。
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'
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)]