gpt4 book ai didi

python - 获取 pandas 中每列的最大值数量

转载 作者:行者123 更新时间:2023-11-30 22:31:07 26 4
gpt4 key购买 nike

我有以下数据框,其中包含每天的时间序列数据:

time-orig   00:15:00    00:30:00    00:45:00    01:00:00
date
2010-01-04 1164.3 1163.5 1162.8 1161.8
2010-01-05 1186.3 1185.8 1185.6 1185.0
2010-01-06 1181.5 1181.5 1182.7 1182.3
2010-01-07 1202.1 1201.9 1201.7 1200.8

现在我想获取每列的最大值数量,如下所示:

'00:15:00' : 3
'00:30:00' : 0
'00:45:00' : 1
'01:00:00' : 0

(即:“00:15:00”列有 3 个最大值,查看每行的最大值。)

我知道我可以转置数据帧并在列上运行循环并使用 idxmax(),但我的问题是是否有矢量化/更好的方法来执行此操作?

最佳答案

一种方法是使用 np.argmax在底层数组数据上,然后使用 np.bincount 对最大索引进行分箱计数-

np.bincount(df.iloc[:,1:].values.argmax(1), minlength=df.shape[1]-1)

示例运行 -

In [141]: df
Out[141]:
time-orig 00:15:00 00:30:00 00:45:00 01:00:00
0 2010-01-04 1164.3 1163.5 1162.8 1161.8
1 2010-01-05 1186.3 1185.8 1185.6 1185.0
2 2010-01-06 1181.5 1181.5 1182.7 1182.3
3 2010-01-07 1202.1 1201.9 1201.7 1200.8

In [142]: c = np.bincount(df.iloc[:,1:].values.argmax(1), minlength=df.shape[1]-1)

In [143]: c
Out[143]: array([3, 0, 1, 0])

In [144]: np.c_[df.columns[1:], c]
Out[144]:
array([['00:15:00', 3],
['00:30:00', 0],
['00:45:00', 1],
['01:00:00', 0]], dtype=object)

关于python - 获取 pandas 中每列的最大值数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894730/

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