簡體   English   中英

如何獲取pandas中每列的最后一個非空值?

[英]How to get last non empty value of each columns in pandas?

我有一個半矩形的 dataframe,像這樣

   a_1    a_2   a_3     a_4
1  Apple  Nuts  Plum    Cucumber
2 Grapes  Kiwi  Apple    ''
3  Melon  Lime   ''      ''
4  Peach  ''     ''      ''

我想要每列的最后一個非空值的列表。 所以 output 期望是 -

['Peach', 'Lime', 'Apple', 'Cucumber']

首先創建 mising 值而不是空字符串,通過iloc向前填充它們和 select 最后一行:

L = df.replace('', np.nan).ffill().iloc[-1].tolist()
print (L)
['Peach', 'Lime', 'Apple', 'Cucumber']

在我看來,最簡單的方法是制作一個 for 循環,檢查每一列的每個值,並在它不為空時存儲它。

你這樣做:

import pandas as pd
data = pd.DataFrame({
    "a_1": ["Apple", "Grapes", "Melon", "Peach"],
    "a_2": ["Nuts", "Kiwi", "Lime", ""],
    "a_3": ["Plum", "Apple", "", ""],
    "a_4": ["Cucumber", "", "", ""]
})

last_non_empty_values =[]
for column in data.columns:
    n = len(data[column])
    for i in range(n-1 ,-1, -1):
        if data[column][i] != "":
            last_non_empty_values.append(data[column][i])
            break


print(last_non_empty_values)

或者,如果您的半矩形不包含空值。 您可以通過這種方式使其更容易:

import pandas as pd
data = pd.DataFrame({
    "a_1": ["Apple", "Grapes", "Melon", "Peach"],
    "a_2": ["Nuts", "Kiwi", "Lime", ""],
    "a_3": ["Plum", "Apple", "", ""],
    "a_4": ["Cucumber", "", "", ""]
})

last_non_empty_values =[data[column][len(data[column])-1 - index] for index, column in enumerate(data.columns)]

print(last_non_empty_values)

兩個示例都正確顯示以下 output:

['Peach', 'Lime', 'Apple', 'Cucumber']

暫無
暫無

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

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