合并时忽略空数据帧

我有四个 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()])



交互式爱情
浏览 108回答 2
2回答

SMILET

您可以使用 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]

Smart猫小萌

使用pandas的数据帧空方法,过滤掉空数据帧,然后您可以连接或运行您想到的任何合并操作:df4 = pd.DataFrame({'A':[]}) #empty dataframedf1 = 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 dataframepd.concat([df for df in dfs if not df.empty],axis=1)    B   C   D0   2   3   4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python