繁体   English   中英

使用python合并具有非NaN值的多列

[英]Using python to merge multiple columns with non-NaN values

我有 3 个具有相同格式和列的数据框,每个数据框都有一个列标准 1 每个数据框都填充了不同的人,我想将此列的非 NaN 值组合在 3 个数据框中,然后将其存储在一个 excel 文件中,以便 NaN 在 excel 中为空值。 我怎样才能在 Python 中做到这一点? 另外,我想知道是否有任何一行至少由两个人填满?

数据帧 1

ID       Criterion 1
1021     10
1022     NaN
1023     NaN
1024     NaN
1025     NaN

数据帧 2

ID       Criterion 1
1021     NaN
1022     15
1023     NaN
1024     NaN
1025     NaN

数据帧 3

ID       Criterion 1
1021     NaN
1022     NaN
1023     NaN
1024     NaN
1025     34

联合数据帧

ID       Criterion 1
1021     10
1022     15
1023     NaN
1024     NaN
1025     34

Excel 文件数据框 1

ID       Criterion 1
1021     10
1022     15
1023     
1024     
1025     34

想法是引发错误,如果自定义函数中Criterion 1列的相同 ID 有 2 个或更多值:

def func(dfs):

    dfs = [x.set_index('ID') for x in dfs]

    df = pd.concat([x['Criterion 1'] for x in dfs], 1)
    m = df.count(axis=1).gt(1)
    L = m.index[m].astype(str)
    if m.any():
        raise ValueError(f'For ID(s) {", ".join(L)} are multiple values')

    return df.groupby(axis=1, level=0).first()


df = func([df1, df2, df3])
print (df)
      Criterion 1
ID               
1021         10.0
1022         15.0
1023          NaN
1024          NaN
1025         34.0

最后,将此数据框写入 Excel 文件格式:

df.to_excel(file)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM