[英]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 = 1
的min/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
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.