我正在尝试使用 Intersection() 合并三个数据帧。如何在运行 Intersection() 之前检查所有数据帧是否存在/已初始化,而无需使用多个 if-else 检查块?如果任何数据帧未赋值,则在执行 Intersection() 时不要使用它。有时我会收到错误 - UnboundLocalError: 赋值前引用了局部变量“df_2”,因为 file2 不存在。
或者还有其他简单的方法可以实现以下目标吗?
以下是我的方法:
if os.path.exists(file1):
df_1 = pd.read_csv(file1, header=None, names=header_1, sep=',', index_col=None)
if os.path.exists(file2):
df_2 = pd.read_csv(file2, header=None, names=header_2, sep=',', index_col=None)
if os.path.exists(file3):
df_3 = pd.read_csv(file3, header=None, names=header_3, sep=',', index_col=None)
common_columns = df_1.columns.intersection(df_2.columns).intersection(df_3.columns)
filtered_1 = df_1[common_columns]
filtered_2 = df_2[common_columns]
filtered_3 = df_3[common_columns]
concatenated_df = pd.concat([filtered_1, filtered_2, filtered_3], ignore_index=True)