iT邦幫忙

0

懇求 試好久 python 數據中如何找列的最大值印出行呢?

假如我有個資料 我要第2行 每10個值找一個最大值+最大值的前2後4個值的整列 應出來會跟下面那個圖一樣 這該怎麼做 我用max那些都無法辦到。 我資料不只這樣所以我要每10行做這個動作。
.txt的數據

https://ithelp.ithome.com.tw/upload/images/20180604/20110175AWfGhzBSOg.png
假如這樣 他就會找出
https://ithelp.ithome.com.tw/upload/images/20180604/20110175QUWtVhUy3r.png

看更多先前的討論...收起先前的討論...
黃彥儒 iT邦研究生 1 級 ‧ 2018-06-04 14:53:14 檢舉
你一列就兩個值,要怎麼找10個,我看了半天還是不知道你想做什麼
r567tw iT邦新手 5 級 ‧ 2018-06-04 15:56:33 檢舉
看不懂
hoolada iT邦新手 5 級 ‧ 2018-06-04 19:14:24 檢舉
抱歉 我列行打錯了 ! 我要找第二行最大的值+前2後4個值 印出他們的列 上面範例找到後會跟下面那圖一樣。最大的是1.91 上面2個跟下面4個值。 試了好多 就是出不來我要的形式 拜託了!
bbclr20 iT邦新手 5 級 ‧ 2018-06-05 07:06:47 檢舉
你有用 pandas 嗎?

1 個回答

0
最佳解答

如果你的檔案是txt file....
我先隨便寫一個給你,不過如果要大量處理這類資料,建議整理成list或pandas中的Series的格式。

file = open('<path/to/your/file>', 'r', encoding='utf8') 

collected_list = []
target_list = []
target_item_list = []

for idx, line in enumerate(file):
    inner_idx = line.split()[0]
    item = line.split()[1]
    
    target_list.append((inner_idx, item))
    target_item_list.append(item)
    
    if (idx+1) % 10 == 0:
        collect_dict = {}
        max_item = max(target_item_list)
        max_item_idx = target_item_list.index(max_item)
        collected_list.append(target_list[max_item_idx-2:max_item_idx+3])
        target_list = []
        target_item_list = []
        
print(collected_list)
hoolada iT邦新手 5 級 ‧ 2018-06-05 10:23:05 檢舉

不好意思請問
target_list.append((inner_idx, item)) //target_list 未定義 是因為我還沒整理成list嗎?

抱歉打錯,已更正,不過建議你還是認真了解一下運作邏輯。

hoolada iT邦新手 5 級 ‧ 2018-06-06 11:23:08 檢舉

我會的 感謝 !!!!!!!!!

我要發表回答

立即登入回答