[英]Merging two dataframes pandas on Id and year where year is missing values
[英]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.