小能豆

迭代两个 Pandas Dataframes 仅在日期较新时保留行

python

迭代两个 Pandas Dataframes 仅在日期较新时保留行


阅读 78

收藏
2023-05-24

共1个答案

小能豆

要迭代两个 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 操作或其他方法来解决问题。

2023-05-24