问题
Say we have used pandas dataframe[column].value_counts()
which outputs:
apple 5
sausage 2
banana 2
cheese 1
How do you extract the values in the order same as shown above from max to min ?
e.g: [apple,sausage,banana,cheese]
回答1:
Try this:
dataframe[column].value_counts().index.tolist()
['apple', 'sausage', 'banana', 'cheese']
回答2:
#!/usr/bin/env python
import pandas as pd
# Make example dataframe
df = pd.DataFrame([(1, 'Germany'),
(2, 'France'),
(3, 'Indonesia'),
(4, 'France'),
(5, 'France'),
(6, 'Germany'),
(7, 'UK'),
],
columns=['groupid', 'country'],
index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
# What you're looking for
values = df['country'].value_counts().keys().tolist()
counts = df['country'].value_counts().tolist()
Now, print(df['country'].value_counts())
gives:
France 3
Germany 2
UK 1
Indonesia 1
and print(values)
gives:
['France', 'Germany', 'UK', 'Indonesia']
and print(counts)
gives:
[3, 2, 1, 1]
回答3:
If anyone missed it out in the comments, try this:
dataframe[column].value_counts().to_frame()
回答4:
First you have to sort
the dataframe
by the count
column max
to min
if it's not sorted that way already. In your post, it is in the right order already but I will sort
it anyways:
dataframe.sort_index(by='count', ascending=[False])
col count
0 apple 5
1 sausage 2
2 banana 2
3 cheese 1
Then you can output the col
column to a list:
dataframe['col'].tolist()
['apple', 'sausage', 'banana', 'cheese']
来源:https://stackoverflow.com/questions/35523635/extract-values-in-pandas-value-counts