[英]Merging columns from multiple dataframes by specified column
我正在研究時間序列,我在csv文件中有10種不同的股票價格。 我想要做的只是將他們的收盤價格轉儲到數據框中,並將該列命名為股票名稱。
我手動完成,但應該有更好的方法。 而且我還有其他所有專欄。 這是我到目前為止所做的。 我需要它們與Date匹配。 如果其中一個人錯過了另一個人的日期,那么它應該有NaN值,這樣我就可以輕松放棄它們了。
這是我到目前為止所做的:
sym1 = "AAPL"
sym2 = "AMZN"
s1 = "./stocks/{}.csv".format(sym1)
s2 = "./stocks/{}.csv".format(sym2)
df = pd.read_csv(s1)
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
ff = pd.read_csv(s2)
ff = ff.reindex(df.index, fill_value=np.nan)
ff[sym1] = df['Close']
ff[sym2] = ff['Close']
print(ff[[sym1, sym2]].tail())
只要您將兩個數據集都存儲為具有公共索引(具有相同數據類型)的數據幀,就可以像這樣使用pd.merge() :
df2 = pd.merge(df, ff, how='left',left_index = True, right_index = True)
最終數據框中的缺失值取決於您的數據集以及how''left how='left'
部分指定的加入方式。 下面是一個基於4個隨機序列構建的示例,它們被連接(簡單合並)兩個一個,然后連接成一個具有一些缺失值的數據幀。
使用left_index = True, right_index = True
將指定它們在您的日期索引上合並。 我更喜歡這樣做,因為你的例子似乎想要使用日期索引。 就像你在問題的標題中所說的那樣,你想用任意列合並數據,你可以使用on
來指定它們。 但這並不是必需的,因為很明顯你在日期中合並數據,並且存儲它們的自然方式是數據框中的索引。
片段:
# Imports
import pandas as pd
import numpy as np
# sample data
np.random.seed(123)
AAPL = pd.Series(np.random.randn(100),index=pd.date_range('1/1/2000', periods=100)).cumsum()
AMZN = pd.Series(np.random.randn(100),index=pd.date_range('1/1/2000', periods=100)).cumsum()
MSFT = pd.Series(np.random.randn(100),index=pd.date_range('3/1/2000', periods=100)).cumsum()
RNDM = pd.Series(np.random.randn(100),index=pd.date_range('3/1/2000', periods=100)).cumsum()
# two dataframes with a common index
df = pd.concat([AAPL, AMZN], axis = 1)
df.columns = ['AAPL', 'AMZN']
ff = pd.concat([MSFT, RNDM], axis = 1)
ff.columns = ['MSFT', 'RNDM']
# merged dataframe from two dataframes
# that do not perfectly share a common index
dfm = pd.merge(df, ff, how='left', left_index=True, right_index=True)
dfm.head()
輸出:
AAPL AMZN MSFT RNDM
2000-01-01 -1.085631 0.642055 NaN NaN
2000-01-02 -0.088285 -1.335833 NaN NaN
2000-01-03 0.194693 -0.623569 NaN NaN
2000-01-04 -1.311601 1.974735 NaN NaN
2000-01-05 -1.890202 1.950109 NaN NaN
情節:使用dfm.plot()
:
如您所見,MSFT和RNDM在行軍月之前沒有任何觀察結果。 那么,如何處理所有這些缺失值? 這完全取決於數據集的結構以及數據丟失的原因。 看看用seaborn繪圖時如何處理缺失值? 有關如何處理pandas數據幀中缺失數據的一些建議和簡要介紹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.