首页 > 解决方案 > 根据常见日期过滤多个数据框

问题描述

我有 21 个数据框。每个数据框都有一列是日期。我想要做的是根据每个数据帧共有的日期过滤所有这些数据帧。这是数据框的示例:

在此处输入图像描述

现在图像 20 个其他类似的数据帧,我想将它们全部过滤,以便所有数据帧只有每个数据帧共有的日期数据。因此,每个数据框都将具有相同的长度和相同的日期。

我只设法根据最短的数据帧(日期最少的数据帧)进行过滤,但这不起作用,因为有些数据帧中没有的日期会导致不同长度的数据帧。(我用的.isin()方法)

标签: pythonpandas

解决方案


第 1 步 - 获取 1 个数据框并存储其所有日期

# numpy array
import numpy as np
dateList = df1["date"].values;

第 2 步 - 处理其他数据框的日期

# make a list of name of all data frame
dataFrameList = [df2, df3, .......df21]

# processing - geting all common dates in 21 df
for df in dataFrameList:
    # dates of current dataframe
    dfdatelist = df["date"].values
    # take intersection
    dateList = np.intersect1d(dateList, dfdatelist)

第 3 步 - 过滤常见日期的所有数据框

df1 = df1 [dataframe["dates"].values.tolist() in dateList.tolist()]

for df in dataFrameList:
    df = df [dataframe["dates"].values.tolist() in dateList.tolist()]

# Print result
print(df1)

for df in dataFrameList:
    print(df);

推荐阅读