在所有列中创建最高值列表 pandas
creating list of top values in all columns pandas
我正在尝试获取 pandas 数据框中所有列中前 2 个值计数的列表。 DF是这样的
column1 column2 column3
1 apple red cat
2 banana blue dog
3 grapes yellow cat
4 apple blue cat
5 banana red tiger
6 banana blue dog
我希望结果以列表的形式出现。像这样:
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
有人可以帮我解决这个问题吗?
对所有列使用 Series.value_counts
并使用切片按索引过滤最高值(因为 value_counts
对值进行排序),然后将值转换为列表:
a = df.apply(lambda x: x.value_counts()[:2].index.tolist()).to_numpy().ravel('F').tolist()
print (a)
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
具有展平值的列表理解解决方案:
a = [x for c in df.columns for x in df[c].value_counts()[:2].index]
print (a)
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
您可以使用简单的列表理解调用 value_counts
combined with itertools.chain
:
from itertools import chain
out = list(chain.from_iterable(df[c].value_counts()[:2].index for c in df))
输出:['banana', 'apple', 'blue', 'red', 'cat', 'dog']
我正在尝试获取 pandas 数据框中所有列中前 2 个值计数的列表。 DF是这样的
column1 column2 column3
1 apple red cat
2 banana blue dog
3 grapes yellow cat
4 apple blue cat
5 banana red tiger
6 banana blue dog
我希望结果以列表的形式出现。像这样:
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
有人可以帮我解决这个问题吗?
对所有列使用 Series.value_counts
并使用切片按索引过滤最高值(因为 value_counts
对值进行排序),然后将值转换为列表:
a = df.apply(lambda x: x.value_counts()[:2].index.tolist()).to_numpy().ravel('F').tolist()
print (a)
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
具有展平值的列表理解解决方案:
a = [x for c in df.columns for x in df[c].value_counts()[:2].index]
print (a)
['banana', 'apple', 'blue', 'red', 'cat', 'dog']
您可以使用简单的列表理解调用 value_counts
combined with itertools.chain
:
from itertools import chain
out = list(chain.from_iterable(df[c].value_counts()[:2].index for c in df))
输出:['banana', 'apple', 'blue', 'red', 'cat', 'dog']