我想获取每行的非 NaN 值,如果该行只有 NaN,我也想将其保留为 NaN。
DF =
a | b | c |
---|---|---|
南 | 南 | ghi |
南 | def | 南 |
南 | 南 | 南 |
abc | 南 | 南 |
南 | 南 | 南 |
结果应该是这样的:
结果 |
---|
ghi |
def |
南 |
abc |
南 |
您好,有许多不同的解决方案。这是我的
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']