Python Pandas 多索引。计算给定多索引主标题的多索引子标题数

Python Pandas Multi-Index. Count the number of multi-index sub-headings for a given multi-index main heading

提问人:gridvision 提问时间:10/7/2023 更新时间:10/7/2023 访问量:32

问:

我需要计算给定多索引主标题的多索引子标题的数量。

这个问题与我之前的问题有关:read_csv:多个标题行。单个标题行中有重复项,但在考虑两个标题行时,没有列重复 如果该链接未通过,stackoverflow 上的搜索词将是:“read_csv:多个标题行。单个标题行中有重复项,但当考虑两个标题行时,没有列是重复的”

使用相同的示例 csv 文件:

示例 csv 文件:

Exp,2023-09-22,2023-09-22,2023-09-29,2023-10-06,2023-10-13  
Code,A,B,A,A,A  
Item,,,,,  
260,1,8,17,31,42  
270,2,9,18,32,43  
280,3,10,19,33,44  
290,4,11,20,34,45  
300,5,12,21,35,46  

并将 csv 读入数据帧,如下所示:

给出输出:

print(df)

Exp  2023-09-22     2023-09-29 2023-10-06 2023-10-13
Code          A   B          A          A          A
Item                                                
270           2   9         18         32         43
280           3  10         19         33         44
290           4  11         20         34         45
300           5  12         21         35         46


问:如何计算给定 Exp 标题的“代码”条目数? 例如: Exp '2023-09-22' 列出了多少个代码条目?答案:2(分别是“A”和“B”) Exp '2023-10-13' 列出了多少个代码条目?答案:1

非常感谢任何帮助编码此查询。

我尝试了 len(df.columns[col_idx]) 和其他迭代的各种组合,但没有什么能让我到达那里。至于可接受的解决方案方法,我会使用计数(例如 int 2 或 int 1)或随后可以计数的名称或值(或它们被认为是的任何名称或值)列表来运行。在所有情况下,代码都将由“A”或“B”组成,或两者兼而有之[“A”和“B”]。

Python Pandas 多索引

评论


答:

0赞 Panda Kim 10/7/2023 #1

法典

groupby + 大小(按列的级别 0)

df.groupby(level=0, axis=1).size()

输出:

Exp
2023-09-22      2
2023-09-29      1
2023-10-06      1
2023-10-13      1

如果您的代码列表不是唯一的(例如,如果 2023-09-22 下有 A、A、B,并且您想要返回 2),请使用以下代码。

df.droplevel(level=-1, axis=1).columns.to_frame(index=False).groupby('Exp')['Code'].nunique()

评论

0赞 gridvision 10/11/2023
谢谢你,Panda Kim。您的回答涵盖了我问题的各个方面,以及我遇到的问题中没有包括的更大问题。非常感谢。