只保留两个 DataFrame 中包含的行

fju*_*urt 0 python dataframe pandas

DataFrames df1我尝试只保留and中包含的日期索引df2,并使用此条件df1_new和创建df2_new。有没有一种无需两步选择的简单方法?

这是一个简单的例子:

df1:
            04B   06B
Date        
2021-01-01  0.3   3.5
2021-01-02  -2.3  -0.1
2021-01-03  0.3   2.1
2021-01-04  -0.4  1.2

df2:
            01K   02K
Date        
2021-01-02  3.2   3.0
2021-01-04  2.2   -2.1
2021-01-05  4.3   -4.1

df1_new:
            04B    06B
Date        
2021-01-02  -2.3   -0.1
2021-01-04  -0.4   1.2

df2_new:
            01K    02K
Date        
2021-01-02  3.2    3.0
2021-01-04  2.2    -2.1
Run Code Online (Sandbox Code Playgroud)

这里是可重复性的代码:

import pandas as pd
df1 = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
    '04B':[0.3, -2.3, 0.3, -0.4], 
    '06B':[3.5, -0.1, 2.1, 1.2]}) 
df1 = df1.set_index('Date')

df2 = pd.DataFrame({
    'Date':['2021-01-02', '2021-01-04', '2021-01-05'],
    '01K':[3.2, 2.2, 4.3], 
    '02K':[3, -2.1, -4.1]}) 
df2 = df2.set_index('Date')
Run Code Online (Sandbox Code Playgroud)

Eri*_*and 5

df1_new = df1.loc[df1.index.isin(df2.index)]
df2_new = df2.loc[df2.index.isin(df1.index)]
Run Code Online (Sandbox Code Playgroud)