[英]How to merge two DataFrames that have different lengths and index of one is a subset of the other but their datatypes are different?
我需要合並這兩個 DataFrame。
+-------------------------------------+--+
| df1: | |
+-------------------------------------+--+
| Date Temperature Load | |
| 01-01-2019 25 400 | |
| 02-01-2019 32 487 | |
| 03-01-2019 35 501 | |
| 04-01-2019 28 457 | |
| ' ' ' | |
| ' ' ' | |
| ' ' ' | |
| 31-12-2019 22 385 | |
+-------------------------------------+--+
+----------------------------------+
| df2: |
+----------------------------------+
| Date Holiday |
| 02-03-2019 Mahashivratri |
| 14-04-2019 Good Friday |
| 18-09-2019 Ganesh Chaturthi |
| ' ' |
| ' ' |
| 25-12-2019 Christmas |
+----------------------------------+
我嘗試了合並方法。
final = df1.merge(df2, on='Date', how='left')
我也類似地嘗試了 join 方法。
final = df1.join(df2, on='Date', how='left')
在這兩種情況下,'Holiday' 列都被附加到 df1,但它的所有值都是 NaN。
+-------------------------------------------------+
| final: |
+-------------------------------------------------+
| Date Temperature Load Holiday |
| 01-01-2019 25 400 NaN |
| 02-01-2019 32 487 Nan |
| ' ' ' ' |
| ' ' ' ' |
| 02-03-2019 33 510 NaN |
| ' ' ' ' |
| ' ' ' ' |
| 31-12-2019 22 385 NaN |
+-------------------------------------------------+
我想要實現的是:
+-------------------------------------------------------+
| final: |
+-------------------------------------------------------+
| Date Temperature Load Holiday |
| 01-01-2019 25 400 NaN |
| 02-01-2019 32 487 Nan |
| ' ' ' ' |
| ' ' ' ' |
| 02-03-2019 33 510 Mahashivratri |
| ' ' ' ' |
| ' ' ' ' |
| 31-12-2019 22 385 NaN |
+-------------------------------------------------------+
您的merge
命令是正確的並且可以完美運行:
df1 = pd.DataFrame({'Date': ['01-01-2019', '02-03-2019'], 'Temperature': [25,32], 'Load': [400, 501]})
df2 = pd.DataFrame({'Date': ['02-03-2019', '14-04-2019'], 'Holiday': ['Mahashivratri', 'Good Friday']})
df1.merge(df2, on='Date', how='left')
它給出了預期的結果:
Date Temperature Load Holiday
0 01-01-2019 25 400 NaN
1 02-03-2019 32 501 Mahashivratri
問題可能出在Date
列的 dtype 上。 您還沒有向我們展示那是什么,但那是您需要查看的地方,因為 rest 是正確的。
下次請發布一個獨立的可運行示例程序,就像我上面所做的那樣。 如果您在這里這樣做,您可能會自己解決您的問題,因為您的數據實際上並不是您認為的那樣。 我敢打賭,您的 Date 列之一具有datetime
dtype,而一個具有object
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.