如何解决Concat来自两个不同来源的两个数据框如果缺少数据框,则无法处理情况
我想连接来自两个源的两个数据帧,它们的结构相同,但行条目不同。我面临的问题是处理某些情况,例如#input可能是单个输入,有时没有输入,有时两者都有。
我的功能是这样的:
def CombiTwoDf(df1,df2):
if isinstance(df1,pd.DataFrame) and isinstance(df2,pd.DataFrame):
frames = [df1,df2]
result = pd.concat(frames)
result.drop_duplicates(subset =None,keep = 'first',inplace = True)
return result
if isinstance(df1,pd.DataFrame) and df2 is None:
return df1
if df2 is None and isinstance(df2,pd.DataFrame):
return df2
if df1 is None and df2 is None:
return None
解决方法
您可以使用列表推导来创建2个数据帧的列表,同时过滤掉非数据帧对象。然后,如果您有2帧,则可以合并并对其进行后期处理。如果列表中有1帧,则只返回该帧,如果有0帧,则返回None
def CombiTwoDf(df1,df2):
frames = [df for df in (df1,df2) if isinstance(df,pd.DataFrame)]
if len(frames) == 2:
out = pd.concat(frames).drop_duplicates(keep="first")
elif len(frames) == 1:
out = frames[0]
else:
out = None
return out
,
当唯一的输入是数据帧或“无”(而不是字符串或标量或任何其他值)时,此方法有效:
def combine_two_dataframes(df1,df2):
if isinstance(df1,pd.DataFrame) or isinstance(df2,pd.DataFrame):
return pd.concat([df1,df2])
else:
return None
您还可以使用try /例外:
def combine_two_dataframes(df1,df2):
try:
return pd.concat([df1,df2])
except:
return None
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。