我有多个这样的pd df:
df1 = [nan nan nan 1
nan 2 nan nan
nan nan nan nan]
df2 = [ 1 nan nan nan
nan nan nan nan
nan nan nan 4]
df3 = [nan nan nan nan
5 nan 3 nan
nan nan nan nan]
现在,我想使用不是nan的列条目创建一个新的df。结果应如下所示:
df1 = [ 1 nan nan 1
5 2 3 nan
nan nan nan 4]
有人知道怎么做吗?预先感谢!
答案 0 :(得分:0)
您可以进行合并:
pd.concat([df1,df2,df3]).groupby(level=0).first()
答案 1 :(得分:0)
您可以尝试以下操作:
将nan
的值替换为0,然后对np.amax
执行axis=0
df1 = [['nan', 'nan', 'nan', 1],
['nan', 2, 'nan', 'nan'],
['nan', 'nan', 'nan', 'nan']]
df1 = pd.DataFrame(df1)
df1 = df1.replace('nan', 0, regex=True)
df2 = [[1, 'nan', 'nan', 'nan'],
['nan', 'nan', 'nan', 'nan'],
['nan', 'nan', 'nan', 4]]
df2 = pd.DataFrame(df2)
df2 = df2.replace('nan', 0, regex=True)
df3 = [['nan', 'nan', 'nan', 'nan'],
[5, 'nan', 3, 'nan'],
['nan', 'nan', 'nan', 'nan']]
df3 = pd.DataFrame(df3)
df3 = df3.replace('nan', 0, regex=True)
output_arr = np.amax(np.array([df1.values, df2.values, df3.values]),axis=0)
output_df = pd.DataFrame(output_arr)
output_df = output_df.replace(0,'nan', regex=True)
output_df
输出: