簡體   English   中英

Pandas Dataframe和Series聯接返回空的Dataframe或NaN列

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

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