gpt4 book ai didi

python - 自定义排序 pandas 数据框

转载 作者:行者123 更新时间:2023-12-01 05:35:21 25 4
gpt4 key购买 nike

我有一个使用 pandas.DataFrame 的(非常大的)表。它包含文本的字数统计;索引是单词列表:

             one.txt  third.txt  two.txt
a 1 1 0
i 0 0 1
is 1 1 1
no 0 0 1
not 0 1 0
really 1 0 0
sentence 1 1 1
short 2 0 0
think 0 0 1

我想根据所有文本中单词的频率对单词列表进行排序。因此,我可以轻松创建一个包含每个单词的频率总和的系列(使用单词作为索引)。但我该如何对这个列表进行排序呢?

一种简单的方法是将列表作为列添加到数据帧中,对其进行排序,然后将其删除。出于性能原因,我想避免这种情况。

描述了另外两种方式here ,但是一个复制了数据帧,这是一个问题,因为它的大小,另一个创建了一个新索引,但我需要有关单词的信息。

最佳答案

您可以计算频率并使用sort方法来查找所需的索引顺序。然后使用 df.loc[order.index] 重新排序原始 DataFrame:

order = df.sum(axis=1).sort(inplace=False)
result = df.loc[order.index]
<小时/>

例如,

import pandas as pd

df = pd.DataFrame({
'one.txt': [1, 0, 1, 0, 0, 1, 1, 2, 0],
'third.txt': [1, 0, 1, 0, 1, 0, 1, 0, 0],
'two.txt': [0, 1, 1, 1, 0, 0, 1, 0, 1]},
index=['a', 'i', 'is', 'no', 'not', 'really', 'sentence', 'short', 'think'])

order = df.sum(axis=1).sort(inplace=False, ascending=False)
print(df.loc[order.index])

产量

          one.txt  third.txt  two.txt
sentence 1 1 1
is 1 1 1
short 2 0 0
a 1 1 0
think 0 0 1
really 1 0 0
not 0 1 0
no 0 0 1
i 0 0 1

关于python - 自定义排序 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com