我有一個嵌套的字典,想評估它的內容,例如找到所有包含元組的第二個元素的數值大于絕對值 1 的日期。
my_dict = {'2020_02_04': {'position_1': ('info_3', -338.99962600006256)},
'2020_02_05': {'position_0': ('info_0', -0.020718000014312565),
'position_1': ('info_0', -0.020718000014312565)},
'2020_02_06': {},
'2020_02_10': {'position_0': ('info_0', 0.010201999975834042),
'position_1': ('info_1', 0.016721999971196055),
'position_2': ('info_2', -0.05537799999001436),
'position_3': ('info_3', 0.00985999999102205),
'position_4': ('info_4', 0.03294800000730902),
'position_5': ('info_4', 0.03294800000730902)}}
對于單個值,我可以通過類似的方式訪問它:
minimal_differences['2020_02_04']['position_1'][1]
df = pd.DataFrame.from_dict(minimal_differences)
df = df.T.sort_index(axis=1) # transpose with .T and sort by column
這里的輸出將是“2020_02_04”,因為元組的絕對數值是 338.9...,所以 > 1。我還想對絕對值串列進行排序,所以
- '2002_02_06':南
- '2020_02_05':0.02
- '2020_02_10': 0.03 <-- 這里選擇了日期的最大值
- '20_02_04':339
(四舍五入的值)。
但我很難在字典的所有元素上實作自動化。我試圖將它匯入 pandas,但仍然無法根據元組的第二個元素進行條件選擇和排序。特別是因為并非所有日期都具有相同數量的資訊。
我也在考慮更多地解壓字典以便在 pandas 中更容易訪問,但我不知道該怎么做。
非常感謝您的幫助。此致!
uj5u.com熱心網友回復:
這個:
...查找包含的元組的第二個元素的數值大于絕對值 1 的所有日期
my_dict = {'2020_02_04': {'position_1': ('info_3', -338.99962600006256)},
'2020_02_05': {'position_0': ('info_0', -0.020718000014312565),
'position_1': ('info_0', -0.020718000014312565)},
'2020_02_06': {},
'2020_02_10': {'position_0': ('info_0', 5.010201999975834042),
'position_1': ('info_1', 4.016721999971196055),
'position_2': ('info_2', -3.05537799999001436),
'position_3': ('info_3', 2.00985999999102205),
'position_4': ('info_4', 1.03294800000730902),
'position_5': ('info_4', 0.03294800000730902)}}
?
for k_date, inner_dict in my_dict.items():
for position, val_tuple in inner_dict.items():
if abs(val_tuple[1]) > 1:
print(f"Date: {k_date}, position: {position}, info: {val_tuple[0]}, value: {val_tuple[1]}")
輸出:
Date: 2020_02_04, position: position_1, info: info_3, value: -338.99962600006256
Date: 2020_02_10, position: position_0, info: info_0, value: 5.010201999975834
Date: 2020_02_10, position: position_1, info: info_1, value: 4.016721999971196
Date: 2020_02_10, position: position_2, info: info_2, value: -3.0553779999900144
Date: 2020_02_10, position: position_3, info: info_3, value: 2.009859999991022
Date: 2020_02_10, position: position_4, info: info_4, value: 1.032948000007309
你有什么想法,我如何制作一個布爾串列來顯示 pandas 資料框中的所有對應日期?
是的:) sum, boolean...你需要什么:)
import pandas as pd
import numpy as np
my_dict = {'2020_02_04': {'position_1': ('info_3', -338.99962600006256)},
'2020_02_05': {'position_0': ('info_0', -0.020718000014312565),
'position_1': ('info_0', -0.020718000014312565)},
'2020_02_06': {},
'2020_02_10': {'position_0': ('info_0', 5.010201999975834042),
'position_1': ('info_1', 4.016721999971196055),
'position_2': ('info_2', -3.05537799999001436),
'position_3': ('info_3', 2.00985999999102205),
'position_4': ('info_4', 1.03294800000730902),
'position_5': ('info_4', 0.03294800000730902)}}
df = pd.DataFrame(my_dict)
def sum_series_tuple(x):
v_sum = 0
for val in x:
if type(val) == tuple:
v_sum =val[1]
return v_sum , abs(v_sum) > 1
df.apply(sum_series_tuple)
輸出:
| 2020_02_04| 2020_02_05| 2020_02_06| 2020_02_10 |
----|-----------|-------------|-----------|------------|
0 |-338.999626| -0.041436 | 0 | 9.047302 |
1 |True |False | False | True |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533406.html
標籤:熊猫字典元组
