[英]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.