【问题标题】:How to find min and max values from list of values in large set of dictionary derived from excel file如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值
【发布时间】:2021-08-18 02:46:50
【问题描述】:

我是使用 Python 处理字典和 Pandas 的新手。我有一个 excel 文件,其中包含名为 sensor 和 values 的列,传感器也可以重复,但它们的值可能不同。我将它们转换为字典,将重复的传感器与其值合并。现在,我有一个字典,其中包含传感器及其值作为列表(下面给出示例)。我想从它们的值列表中返回所有具有最低和最高值的键。值也可以重复。

{'Sensor1': [0.427, 0.13, 0.129, 0.124], 'sensor2': [2.376, 2.376, 0.712, 0.618.208, 0.133], 'sensor3': [0.21, 0.139], 'sensor4': [0.237, 0.123], 'sensor5': [0.997, 0.806, 6.78]}

我希望输出是

sensor1 0.124 0.427
sensor2 0.133 2.376
sensor3 0.139 0.21
.
.
.

我尝试过的代码只给了我第一组键值对,即

senor1 0.124 0.427

代码-

df = pd.read_excel("sensor.xlsx")
a=df.set_index('sensor')['values'].to_dict()
b={k: g["values"].to_list() for k,g in df.groupby("sensor")}
for k,v in b.items():
    _max, _min = max(v), min(v)
    print(k, " ", _min, " ",  _max)

我的 excel 文件很大,此代码不适用于该文件。请帮忙,在此先感谢!

【问题讨论】:

  • 所以您是说b.items() 只返回一个键值对,还是还有其他问题?你的问题不是很清楚。
  • @MarkRansom 嗨,我稍微编辑了这个问题。是的,b.items() 返回一个键值对。

标签: python excel pandas csv dictionary


【解决方案1】:

如果您已经有了字典,那么您可以将数据加载到数据框中并评估 min/maxaxis = 1

data = {'Sensor1': [0.427, 0.13, 0.129, 0.124], 'sensor2': [2.376, 2.376, 0.712, 0.618208, 0.133], 'sensor3': [0.21, 0.139], 'sensor4': [0.237, 0.123], 'sensor5': [0.997, 0.806, 6.78]}

df = pd.DataFrame.from_dict(data, orient='index') 
df = pd.concat([df.min(1) , df.max(1)], axis =1)

或者你可以使用:

df = df.agg(['min', 'max'], axis='columns')  # suggested by @Cyttorak 

输出

            0      1
Sensor1  0.124  0.427
sensor2  0.133  2.376
sensor3  0.139  0.210
sensor4  0.123  0.237
sensor5  0.806  6.780

如果要将上述输出转换回dict

result = df.T.to_dict('list')

【讨论】:

  • df.agg(['min', 'max'], axis='columns')
猜你喜欢
  • 1970-01-01
  • 2018-01-09
  • 2015-08-05
  • 1970-01-01
  • 2016-06-07
  • 2011-12-12
  • 1970-01-01
  • 2020-12-02
  • 2023-03-29
相关资源
最近更新 更多