[英]Pandas Dataframe and Series join returns empty Dataframe or NaN column
我遇到的問題是,當我嘗試連接一個Dataframe和一個Series時,由於某種原因,所得的Dataframe為空或具有NaN值列。 我試圖弄清楚為什么會這樣。
該系列如下所示:
index
110 0.135135
111 0.000000
1110 0.000000
數據框如下所示:
mean std
index
1101 -41.000000 46.305225
1102 -58.724998 126.810371
1110 -6.375000 12.915982
當我不指定“如何”時,我得到以下信息:
mean std series_col
index
1101 -41.000000 46.305225 NaN
1102 -58.724998 126.810371 NaN
1110 -6.375000 12.915982 NaN
這是我嘗試使用以下方式將兩者結合在一起的方式:
merged = df1.join(series1, how='inner')
我得到以下輸出:
Empty DataFrame
Columns: [mean, std, series_col]
Index: []
我不知道怎么了。 我認為這一定是一個索引問題,但是我可以肯定地知道,Dataframe和Series都有一些相交的索引來匹配數據。
讓我知道我是否可以提供其他有用的信息。
當我這樣做時,我得到了
df1.join(series1)
mean std 1
1101 -41.000000 46.305225 NaN
1102 -58.724998 126.810371 NaN
1110 -6.375000 12.915982 0.0
我猜你的一個索引是字符串,另一個是整數
存在問題的索引不是相同的dtypes
,因此獲取NaN
。
解決方案將兩個索引都轉換為int
或都轉換為str
以對齊:
series1.index = series1.index.astype(int)
df1.index = df1.index.astype(int)
series1.index = series1.index.astype(str)
df1.index = df1.index.astype(str)
對我來說,它返回:
#inner join
merged = df1.join(series1, how='inner')
print (merged)
mean std val
index
1110 -6.375 12.915982 0.0
#default left join
merged = df1.join(series1)
#same as:
merged = df1.join(series1, how='left')
print (merged)
mean std val
index
1101 -41.000000 46.305225 NaN
1102 -58.724998 126.810371 NaN
1110 -6.375000 12.915982 0.0
merged = df1.join(series1, how='outer')
print (merged)
mean std val
index
110 NaN NaN 0.135135
1101 -41.000000 46.305225 NaN
1102 -58.724998 126.810371 NaN
111 NaN NaN 0.000000
1110 -6.375000 12.915982 0.000000
merged = df1.join(series1, how='right')
print (merged)
mean std val
index
110 NaN NaN 0.135135
111 NaN NaN 0.000000
1110 -6.375 12.915982 0.000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.