python - 使用reduce连接多个数据框,其中一个为空
问题描述
我有 3 个 pd 数据框,我想加入公共列。
前任:
df1=pd.DataFrame({'a':[1,2,3],'b':[3,5,6],'c':[1,2,5]})
df2=pd.DataFrame({'a':[1,1,3],'b':[3,5,6]})
df3=pd.DataFrame({'a':[1,1,1],'b':[3,5,6],'d':[4,5,6]})
我正在使用reduce
:
dfs=[df1,df2,df3]
final = reduce(lambda left, right: pd.merge(left, right, on=cols_common), dfs)
问题:其中一个 df 可能是空的。如果其中一个为空,则此命令将引发错误。有什么建议吗?
编辑:
预期的结果是加入的数据框。应该忽略空数据框。我想知道是否有办法做到这一点,同时避免使用 try except 子句的 for 循环。
解决方案
如果需要删除空 DataFrame,请使用列表理解DataFrame.empty
:
df1=pd.DataFrame({'a':[1,2,3],'b':[3,5,6],'c':[1,2,5]})
df2=pd.DataFrame({'a':[1,1,3],'b':[3,5,6]})
df3=pd.DataFrame()
dfs=[df1,df2,df3]
cols_common = ['a','b']
dfs1 = [x for x in dfs if not x.empty]
final = reduce(lambda left, right: pd.merge(left, right, on=cols_common), dfs1)
print (final)
a b c
0 1 3 1
1 3 6 5
推荐阅读
- javascript - 如果存在重复值,如何合并对象数组,如果键是通用的,则将通用值合并到单个键中
- git - 为什么本地分支文件被还原?
- hadoop - 使用 Hive 将表数据从一个 Hadoop 环境传输到另一个 Hadoop 环境并使用 oozie 进行调度
- python - 如何根据小时标准获得每天每个组的最小值
- visual-studio - 在 Visual Studio 2019 中添加控制器会出错。值 -1 超出范围
- postgresql - 如何防止或避免在 PostgreSQL 中运行没有 where 子句的更新和删除语句
- excel - 如何将网络计算器集成到excel中?
- laravel - Laravel 身份验证登录不断给出“这些凭据与我们的记录不匹配”。
- function - 如何使用flutter和firebase实时数据库发送fcm通知
- android - Android Pdf Viewer Library : PDF is not loading using URL