Python Pandas Dataframe和Series join返回空的Dataframe或NaN列
我遇到的问题是,当我尝试连接一个数据帧和一个系列时,由于某种原因,结果数据帧要么是空的,要么有一列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
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值。我需要它们一个接一个,而不是把它们加在一起,除了把它们串起来,我想不出别的办法。你对我如何解决这个问题有什么建议吗?