python - 创建包含特定列的最小值和最大值的新数据框时获得的值错误
问题描述
我有一个如下所示的数据框。我需要找到“ Chip_Current[uAmp] ”列的最小值和最大值我使用下面的代码创建了一个新的数据框,但出现了错误。
ValueError:通过了 2 列,传递的数据有 1 列。
data = [[DEEP_SLEEP_PVT['Chip_Current[uAmp]'].min()], [DEEP_SLEEP_PVT['Chip_Current[uAmp]'].max()]]
df_DS = pd.DataFrame(data, columns = ['MIN', 'MAX'])
DEEP_SLEEP_PVT 是我的数据透视表名称
运行 Jerzel 提供的代码后,输出将按预期进行。请看下文。
解决方案
使用Series.aggregate
,输出为Series
,因此对于一行DataFrame
将其转换为DataFrame
并转置:
df1 = DEEP_SLEEP_PVT['Chip_Current[uAmp]'].agg(['min','max']).to_frame().T
如果需要每个其他列/级别的最小值和最大值,例如Device_ID
use GroupBy.agg
:
df2 = DEEP_SLEEP_PVT.groupby('Device_ID')['Chip_Current[uAmp]'].agg(['min','max'])
或按多个列/级别:
df3 = (DEEP_SLEEP_PVT.groupby(['Device_ID', 'Temp(deg)'])['Chip_Current[uAmp]']
.agg(['min','max']))
样本数据:
DEEP_SLEEP_PVT = (pd.DataFrame({'Chip_Current[uAmp]':[5,0,-1,2,3,2,1,-5,7,4.8],
'Device_ID':['FF_2646'] * 5 + ['TT_2438'] * 5,
'Temp(deg)':[-20]*3 + [25] * 2 + [-20]*3 + [25] * 2})
.set_index(['Device_ID','Temp(deg)']))
print (DEEP_SLEEP_PVT)
Chip_Current[uAmp]
Device_ID Temp(deg)
FF_2646 -20 5.0
-20 0.0
-20 -1.0
25 2.0
25 3.0
TT_2438 -20 2.0
-20 1.0
-20 -5.0
25 7.0
25 4.8
df1 = DEEP_SLEEP_PVT['Chip_Current[uAmp]'].agg(['min','max']).to_frame().T
print (df1)
min max
Chip_Current[uAmp] -5.0 7.0
df2 = DEEP_SLEEP_PVT.groupby('Device_ID')['Chip_Current[uAmp]'].agg(['min','max'])
print (df2)
min max
Device_ID
FF_2646 -1.0 5.0
TT_2438 -5.0 7.0
df3 = DEEP_SLEEP_PVT.groupby(['Device_ID', 'Temp(deg)'])['Chip_Current[uAmp]'].agg(['min','max'])
print (df3)
min max
Device_ID Temp(deg)
FF_2646 -20 -1.0 5.0
25 2.0 3.0
TT_2438 -20 -5.0 2.0
25 4.8 7.0
推荐阅读
- file - 如何在没有 http 服务器的情况下使用文件:// url 从 Chrome 使用文件系统访问 API
- r - R根据多个条件减去值
- ios - Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。” 错误
- java - 使用 Retrofit 2.0 在正文中发布请求 JSON
- c - 使用 Flex 编译器时的编译问题
- python-3.x - 如何从 csv 文件(2020 年 1 月到 2020 年 3 月)计算给定月份和天数列之间的天数?
- r - 如何“四舍五入”ggplot中的范围线
- html - CSS:为什么视图外观会因更改固定尺寸的浏览器宽度而改变?
- qt - 遇到多重采样时没有有用的 QOpenGLFramebufferObject::blitFramebuffer() 和 texture()
- java - 如何使用带 LatLng 的 SharedPreferences(错误)