2017-08-29 67 views
1

我有兩個數據框,代表隨時間變化的股票價格和隨時間變化的股票相關信息(例如公司的基本數據)。來自2只熊貓數據框的過濾元素

這兩個數據幀都包含每月數據,但它們在不同的時間跨度上。一個是5年,另一個是10年。而且,兩者的股票數量都不一樣,只有80%的重疊。

下面是dataframes的示例:

days1 = pd.date_range(開始=「1/1/20世紀80年代,端='7/1/20世紀80年代,FREQ = 'M')

DF1 = pd.DataFrame(np.random.randn(6,4),列=列表( 'ABCD'),指數= days1)

days2 = pd.date_range(開始=「1/1/1980年',end ='5/1/1980',freq ='M')

df2 = pd.DataFrame(np.random.randn(4,6),columns = list('ABCDEF'),index =天2)

我的目標是減少兩個數據幀到內部聯合。也就是說,它們都覆蓋相同的時間段幷包含相同的股票。我的索引包含日期,列名稱是股票名稱。我已經嘗試過merge()等多種變體,但是這些重新創建一個合併的數據框,我想保留兩個數據框。我也嘗試過isin(),但我正在努力訪問每個數據框的索引。例如:

DF3 = DF1 [df1.isin(DF2)dropna()

是否有人有什麼建議嗎?

+2

你的代碼請張貼的例子。 – James

回答

1

爲列交叉:

column_intersection = df1.columns & df2.columns 

該行路口:

row_intersection = df1.index & df2.index 

然後就集中每一個數據幀:

df1 = df1.loc[row_intersection, column_intersection] 
df2 = df2.loc[row_intersection, column_intersection] 
+0

非常感謝。這非常簡單和美麗,我花了幾個小時試圖弄清楚這一點! –