所以我有以下兩個資料集:
df1:
| 指數 | 約會時間 | 團隊 | 其他條件 |
|---|---|---|---|
| 1 | 2013-4-1 | A隊 | 73.3 |
| 2 | 2013-4-1 | b隊 | 34.5 |
| 3 | 2014-3-12 | c隊 | 57.2 |
df2:
| 指數 | 約會時間 | 家 | 離開 | 其他條件 |
|---|---|---|---|---|
| 1 | 2013-4-1 | A隊 | c隊 | 73.3 |
| 2 | 2013-4-1 | d組 | e隊 | 73.3 |
| 3 | 2014-3-12 | f隊 | A隊 | 348.2 |
現在我需要通過以下方式合并這兩個:
對于 df1 找到 df2 中 df1['datetime']==df2['datetime'] AND df1['team']== df2['home'] OR df2['away'] 的行
然后將 df1 中的行附加到 df 2 中的匹配行
df2 比 df1 大,所以如果所有行都匹配,則應該有一個空視圖剩余,這不是問題。
非常感謝任何有用的提示,否則我必須手動找到匹配的 >4000 行
uj5u.com熱心網友回復:
在沒有看到更多資料的情況下,這將為您提供您正在尋找的結果
data = {
'datetime' : ['2013-4-1', '2013-4-1', '2014-3-12', '2014-4-12'],
'team' : ['team a', 'team b', 'team c', 'team b'],
'other conditions' : [73.3, 34.5, 57.2, 384.3]
}
data2 = {
'datetime' : ['2013-4-1', '2013-4-1', '2014-3-12', '2014-4-12'],
'home' : ['team a', 'team d', 'team f', 'team g'],
'away' : ['team c', 'team e', 'team a', 'team b'],
'other conditions' : [73.3, 34.5, 57.2, 38.3]
}
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
df3 = df2.merge(df1, how='left', on = 'datetime', suffixes = ('','_y'))
comp_column = np.where((df3['team'] == df3['home']) | (df3['team'] == df3['away']), True, False)
df3['check'] = comp_column
df3 = df3.loc[df3['check'] == True]
df3.drop((['other conditions_y', 'check']), axis = 1, inplace = True)
df3
這將在日期時間將您的 df1 和 df2 連接在一起,這可能會產生一些錯誤的連接,但如果您只是在尋找團隊在家或外出的位置,底部的 np.where 將為您解決這個問題。
uj5u.com熱心網友回復:
df1['home']=df1['team']
df1['away']=df1['team']
dfhome = df1.merge(df2, on=['datex', 'home'], how='inner')
dfaway = df1.merge(df2, on=['datex', 'away'], how='inner')
然后將dfhome和dfaway放在一起。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442414.html
上一篇:在熊貓中合并日期和時間列
