python-3.x Pandas表的前2列和前1行

f4t66c6m  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(162)

我有一个Pandas交叉制表表,如下所示:

我想修剪数据框,所以我只有前2列数据(类A和类B)和前1行数据(真)。这是通过使用所有列和行计算的。我在计算中排除了所有记录。这是一个虚拟示例,我试图在一个更大的数据集上做一些事情,这就是为什么我不想硬编码这个虚拟示例的解决方案。
我希望 Dataframe 如下所示:

TFColumn Class A  Class B All
================================
    True 97120    49035   196590
     All 148026   74978   300000

我已经成功地对行执行了此操作,但不确定如何将其扩展到列。

contingencyTable.sort_values(by=['All'], ascending = False).head(2)
w41d8nur

w41d8nur1#

也有pd.DataFrame.nlargest;也许是这样的:

import pandas as pd

df = pd.DataFrame({
    "Class A": [50906, 97120, 148026],
    "Class B": [25943, 49035, 74978],
    "Class C": [17813, 33805, 51618],
    "Class D": [8784, 16630, 25378],
    "All": [103410, 196590, 300000]
}, index=["False", "True", "All"])

rows = df.nlargest(n=2, columns="All").index
cols = df.T.nlargest(n=3, columns="All").index

out = df.loc[rows, cols]

输出:

All  Class A  Class B
All   300000   148026    74978
True  196590    97120    49035

相关问题