不选择 pandas dataframe 中每一行的 NaN 值

问题描述 投票:0回答:1

我想获取每行的非 NaN 值,如果该行只有 NaN,我也想将其保留为 NaN。

DF =

a b c
ghi
def
abc

结果应该是这样的:

结果
ghi
def
abc
python pandas dataframe nan
1个回答
0
投票

您好,有许多不同的解决方案。这是我的

import pandas as pd

data = {'a': ['NaN', 'NaN', 'NaN', 'abc', 'NaN'],
        'b': ['NaN', 'def', 'NaN', 'NaN', 'NaN'],
        'c': ['ghi', 'NaN', 'NaN', 'NaN', 'NaN']}

df = pd.DataFrame(data)

ls = []
for idx, row in df.iterrows():
    if any(x != "NaN" for x in row.unique()): # checking if there is any element which doesnt match "NaN" in the row
        mismatch = next((x for x in row.unique() if x != "NaN"), None) # if there is a mismatch get that element which mismatch "NaN"
        ls.append(mismatch)
    else:
        ls.append("NaN")
>>> print(ls)
['ghi', 'def', 'NaN', 'abc', 'NaN']
© www.soinside.com 2019 - 2024. All rights reserved.