Python Pandas Dataframe和Series join返回空的Dataframe或NaN列

Python Pandas Dataframe和Series join返回空的Dataframe或NaN列,python,pandas,dataframe,merge,series,Python,Pandas,Dataframe,Merge,Series,我遇到的问题是,当我尝试连接一个数据帧和一个系列时,由于某种原因,结果数据帧要么是空的,要么有一列NaN值。我正试图弄明白为什么会发生这种情况 该系列如下所示: index 110 0.135135 111 0.000000 1110 0.000000 mean std index 1101 -41.000000 46.305225 1102 -58.724998

我遇到的问题是,当我尝试连接一个数据帧和一个系列时,由于某种原因,结果数据帧要么是空的,要么有一列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
数据帧如下所示:

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都有一些交叉索引来匹配数据


如果我能提供任何其他有用的信息,请告诉我。

有问题,索引与
数据类型不同,因此获取
NaN

解决方案将两个索引强制转换为
int
,或将两个索引强制转换为
str
,以便对齐:

series1.index = series1.index.astype(int)
df1.index = df1.index.astype(int)

对我来说,这是回报:

#inner join
merged = df1.join(series1, how='inner')
print (merged)
        mean        std  val
index                       
1110  -6.375  12.915982  0.0




有一个问题,索引与
d类型不一样
,因此获取
NaN

解决方案将两个索引强制转换为
int
,或将两个索引强制转换为
str
,以便对齐:

series1.index = series1.index.astype(int)
df1.index = df1.index.astype(int)

对我来说,这是回报:

#inner join
merged = df1.join(series1, how='inner')
print (merged)
        mean        std  val
index                       
1110  -6.375  12.915982  0.0



当我这么做的时候,我得到了

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
我猜你的索引中有一个是字符串,另一个是int,当我这样做的时候,我得到了

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

我猜你的一个索引是字符串,另一个是整数

我想加入class='inner'只会查找相交的索引并拉出这些行?如果这不是真的,我如何在索引上匹配它们?是的,确切地说,它只返回
intersect
索引。但问题是有整数和字符串,请参阅解决方案-将两者都转换为int或都转换为str。我想与how='inner'结合只会查找相交的索引并拉出这些行?如果这不是真的,我如何在索引上匹配它们?是的,确切地说,它只返回
intersect
索引。但问题是存在整数和字符串,请参阅解决方案-将两者都转换为int或都转换为str。实际上,您是对的。对于这个系列,我需要从两列创建索引,每列包含一半的id值。我需要它们一个接一个,而不是把它们加在一起,除了把它们串起来,我想不出别的办法。你有没有建议我如何解决这个问题?事实上,你是对的。对于这个系列,我需要从两列创建索引,每列包含一半的id值。我需要它们一个接一个,而不是把它们加在一起,除了把它们串起来,我想不出别的办法。你对我如何解决这个问题有什么建议吗?