python - 从 Python 中的字典中的 pandas 数据帧中获取最小值和最大值
问题描述
我有一个字典 ( pollution
),其中一个键我希望忽略 ( chemical_start_time
),所有其他键的值都是 pandas 数据帧。
我想获得任何数据帧中存在的最大值和最小非零值。
我相信下面的代码正是这样做的,但我正在寻找最有效或“pythonic”的方式来做到这一点
import numpy as np
max_pols = []
min_pols = []
for key, df in pollution.items():
if key != 'chemical_start_time':
max_pols.append(max(df.max()))
min_pols.append(np.nanmin(df[df > 0].min()))
max_pol = max(max_pols)
min_pol = min(min_pols)
解决方案
一种可能的提高性能的解决方案是使用numpy.ravel
来自 DataFrame 的所有值的一维数组,然后使用np.min
(如果可能缺少值np.nanmin
)和np.max
:
df1 = pd.DataFrame({
'C':[7,8,9,4,2,3],
'D':[10,3,5,-7,10,0],
'E':[5,-3,6,9,2,4],
})
df2 = pd.DataFrame({
'A':[73,8,9,4,2,3],
'D':[1,3,52,-7,1,0],
'E':[53,-33,63,9,2,4],
})
pollution = {'a':df1, 'b':df2, 'chemical_start_time':pd.DataFrame([100])}
max_pols = []
min_pols = []
for key, df in pollution.items():
if key != 'chemical_start_time':
v = df.values.ravel()
max_pols.append(np.max(v))
min_pols.append(np.min(v[v > 0]))
max_pol = np.max(max_pols)
min_pol = np.min(min_pols)
print (max_pol)
73
print (min_pol)
1
推荐阅读
- javascript - 如何捕获具有相同数据属性的多个 div 的文本?
- ios - 如何使用 Photos 框架从 iOS 上的相机胶卷中获取最新照片?
- python - 如何在 python 海龟图形中更改海龟的 Hitbox 大小?
- r - 如何从我的数据框中仅选择无序因子?
- javascript - 在 NOSQL 数据库中存储 HTML?
- flutter - 如何在 Flutter 的 App bar 内添加 texfield?
- mediawiki - 生成输入字符串的加密哈希值的 Mediawiki 扩展?
- php - 在列表中查找特定数字并回显包含该数字的行
- javascript - D3.js 无法更新组中的现有元素
- postgresql - 在 PostgreSQL 9.4 上计算两个小时之间的差异