簡體   English   中英

如何合並具有不同長度和索引的兩個 DataFrame 是另一個的子集,但它們的數據類型不同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM