提问人:gridvision 提问时间:10/7/2023 更新时间:10/7/2023 访问量:32
Python Pandas 多索引。计算给定多索引主标题的多索引子标题数
Python Pandas Multi-Index. Count the number of multi-index sub-headings for a given multi-index main heading
问:
我需要计算给定多索引主标题的多索引子标题的数量。
这个问题与我之前的问题有关: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”]。
答:
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。您的回答涵盖了我问题的各个方面,以及我遇到的问题中没有包括的更大问题。非常感谢。
上一个:重塑后对数据帧进行转换
下一个:检查数据帧列是否为分类
评论