簡體   English   中英

如何從從 excel 文件派生的大量字典中的值列表中查找最小值和最大值

[英]How to find min and max values from list of values in large set of dictionary derived from excel file

我是處理字典和 Python 中的 Pandas 的新手。 我有一個 excel 文件,其中包含名為傳感器和值的列,傳感器也可以重復,但它們的值可能不同。 我將它們轉換為字典,將重復的傳感器與其值合並。 現在,我有一個字典,其中包含傳感器及其值作為列表(下面給出示例)。 我想從它們的值列表中返回所有具有最低和最高值的鍵。 值也可以重復。

{'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]}

我希望 output 成為

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 文件很大,此代碼不適用於此。 請幫助,在此先感謝!

如果您已經有了字典,那么您可以將數據加載到 dataframe 並評估跨axis = 1min/max

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 

OUTPUT

            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

如果要將上述 output 轉換回dict

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM