为了账号安全,请及时绑定邮箱和手机立即绑定

合并时忽略空数据帧

合并时忽略空数据帧

交互式爱情 2022-09-20 17:41:30
我有四个 df (df1,df2,df3,df4)有时 df1 为空,有时 df2 为空,有时 df3 和 df4 相应。如何进行外部合并,以便自动忽略空的 df?我正在使用以下代码进行合并,截至目前:-df = f1.result().merge(f2.result(), how='left', left_on='time', right_on='time').merge(f3.result(), how='left', left_on='time', right_on='time').merge(f4.result(), how='left', left_on='time', right_on='time')和df = reduce(lambda x,y: pd.merge(x,y, on='time', how='outer'), [f1.result(),f2.result(),f3.result(),f4.result()])
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

您可以使用 df.empty 属性或检查数据帧是否为空。len(df) > 0

试试这个:

dfs = [df1, df2, df3, df4]

non_empty_dfs = [df for df in dfs if not df.empty]


df_final = reduce(lambda left,right: pd.merge(left,right, on='time', how='outer'), non_empty_dfs)

或者,您也可以将空数据帧过滤为:


non_empty_dfs = [df for df in dfs if len(df) > 0]


查看完整回答
反对 回复 2022-09-20
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

使用pandas的数据帧空方法,过滤掉空数据帧,然后您可以连接或运行您想到的任何合并操作:


df4 = pd.DataFrame({'A':[]}) #empty dataframe

df1 = pd.DataFrame({'B':[2]})

df2 = pd.DataFrame({'C':[3]})

df3 = pd.DataFrame({'D':[4]})


dfs = [df1,df2,df3,df4]


#concat

#u can do other operations since u have gotten rid of the empty dataframe


pd.concat([df for df in dfs if not df.empty],axis=1)


    B   C   D

0   2   3   4


查看完整回答
反对 回复 2022-09-20
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信