根据共同日期过滤多个数据框

时间:2021-07-16 22:34:09

标签: python pandas

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

第 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);
相关问题