簡體   English   中英

合並 DataFrames 在 Pandas 中返回缺失值

[英]Merging DataFrames returning missing values in Pandas

我有這兩個要合並的數據框:

df1 = pd.DataFrame({'platform': ['android', 'android','android','android','ios','ios','ios','ios'],
                    'day': [3, 7, 14, 30,3, 7, 14, 30],
                    'value_m' : [1.2, 1.3, 1.7, 1.8,1.6, 2.3, 3.7, 1.8,]})

df2 = pd.DataFrame({'platform': ['android','ios','ios','android','android','android','ios','ios'],
                    'day': [3, 7, 14, 30, 3, 7, 14, 30],
                    'value_x' : [4, 6, 8, 9,4,6,7,8]})

我使用列 platform 和 day 創建一個新的 dataframe,其中包括我的 df1 上的列“value_x”。 我已經用這段代碼試過了:

df_pred = df1.merge(df2, left_on=["platform","day"], right_on=["platform","day"], how="left")
df_pred

這就是我得到的:

在此處輸入圖像描述

我不明白為什么在使用平台和日期將數據拉到新的 dataframe 后它充滿了 NaN。關於為什么會發生這種情況的任何線索?

謝謝!

實際數據中的問題是因為day在一個 DataFrame 字符串和另一個數字中。

嘗試在真實數據中將值轉換為相同類型:

df1['day'] = df1['day'].astype(int)
df2['day'] = df2['day'].astype(int)

您的示例數據運行良好。

df_pred = df1.merge(df2, on=["platform","day"], how="left")
print (df_pred)
  platform  day  value_m  value_x
0  android    3      1.2      4.0
1  android    3      1.2      4.0
2  android    7      1.3      6.0
3  android   14      1.7      NaN
4  android   30      1.8      9.0
5      ios    3      1.6      NaN
6      ios    7      2.3      6.0
7      ios   14      3.7      8.0
8      ios   14      3.7      7.0
9      ios   30      1.8      8.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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