我正在使用500赫茲取樣的眼睛跟蹤器,因此我每2毫秒測量一次。我已經加載這個數據到數據幀,並隨着時間的樣本重新索引它,這樣我行的索引匹配的時間,以毫秒爲單位,在記錄時所:如何將一個數據框合併到另一個數據框中,插入不存在的行?
下面是該數據幀的切片(注意:event
列包含空字符串現在):
x y cr event
2000 109.9 1133.7 4264.0
2001 109.0 1133.3 4267.0
2002 107.1 1130.6 4269.0
2003 104.3 1128.0 4270.0
2004 97.8 1125.2 4268.0
2005 89.8 1124.3 4266.0
2006 79.2 1121.3 4274.0
2007 69.5 1118.7 4284.0
2008 59.6 1116.7 4293.0
2009 53.0 1116.9 4291.0
2010 48.6 1117.1 4290.0
正如你所看到的,有沒有奇數時間索引,再次,因爲機器的樣品每2毫秒。
我的第二個DataFrame跟蹤發送給eyetracker的TTL。這些TTL可以在毫秒分辨率的任何時間發生,所以在這裏可以是是奇數時間戳。這第二個DataFrame有兩列,t
和msg
。這裏有一個片段:
t msg
0 11911 WarningOnset
1 12510 CueOnset
2 14693 WarningOnset
3 17009 WarningOnset
4 17642 CueOnset
我的目標是第二個數據幀合併到第一,使得dataframe2的msg
列中每個項目被放入dataframe1的event
列由t
欄表示的指數。
這意味着我在dataframe1中的一些索引目前還不存在,這就是爲什麼我目前的方法與KeyError
失敗。
這裏是我的嘗試:
samples.loc[events['t'], 'event'] = events['msg'] # throws KeyError
什麼是這樣做的正確方法是什麼?爲了清楚起見,我想要將NaN
s放在dataframe2中不存在的列中(即上面示例中的events
)。
你看過'join'方法嗎? – BrenBarn
@BrenBarn,我現在看,謝謝! (如果可能的話,一個例子仍然是受歡迎的) – blz
您是否嘗試過'df。合併(df1,on ='t',how ='left')',假設df是你的第一個數據幀,df1是你的第二個 – EdChum