迭代两个 Pandas Dataframes 仅在日期较新时保留行
要迭代两个 Pandas DataFrame,并且只保留具有较新日期的行,可以使用 Pandas 的迭代功能以及日期比较操作。以下是一个示例代码:
import pandas as pd # 创建示例 DataFrame df1 = pd.DataFrame({'日期': ['2023-05-20', '2023-05-21', '2023-05-22'], '数值1': [10, 20, 30]}) df2 = pd.DataFrame({'日期': ['2023-05-21', '2023-05-22', '2023-05-23'], '数值2': [40, 50, 60]}) # 将日期列转换为 datetime 类型 df1['日期'] = pd.to_datetime(df1['日期']) df2['日期'] = pd.to_datetime(df2['日期']) # 仅保留较新日期的行 result = pd.DataFrame(columns=['日期', '数值1', '数值2']) for index1, row1 in df1.iterrows(): for index2, row2 in df2.iterrows(): if row1['日期'] < row2['日期']: result = result.append(row2, ignore_index=True) print(result)
在上述示例中,我们首先将日期列转换为 datetime 类型,以便进行日期比较。然后,使用两个嵌套的循环迭代 df1 和 df2 中的每一行。在每次迭代中,通过比较日期,如果 df2 中的日期较新,则将该行添加到结果 DataFrame 中。
最后,打印结果 DataFrame,其中仅包含较新日期的行。
请注意,如果 DataFrame 的大小非常大,上述方法可能会变得低效,因为它涉及到嵌套的循环。在这种情况下,可能需要考虑使用更高效的 Pandas 操作或其他方法来解决问题。