pandas 合并2个具有不同索引的系列

k4aesqcs  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(118)

我有两个系列与不同的索引,但相同的长度638。
系列fc的输出为

1888    4.899912
1889    4.900162
1890    4.900141
1891    4.900142
1892    4.900142
          ...   
2521    4.900142
2522    4.900142
2523    4.900142
2524    4.900142
2525    4.900142
Name: predicted_mean, Length: 638, dtype: float64

字符串
系列fc_series的输出为

Date
2020-12-16   NaN
2020-12-17   NaN
2020-12-18   NaN
2020-12-21   NaN
2020-12-22   NaN
              ..
2023-06-26   NaN
2023-06-27   NaN
2023-06-28   NaN
2023-06-29   NaN
2023-06-30   NaN
Name: predicted_mean, Length: 638, dtype: float64


我试着用这条代码行

fc_series = pd.Series(fc, index=test_data.index)


我希望fc的值代替fc_series中的NaN值。我正在努力与索引的一部分,这将真的很感激的帮助。

yvgpqqbh

yvgpqqbh1#

你就快到了。
问题是,从另一个Series创建一个Series并传递一个Index将执行索引对齐,而这正是您在这里不希望看到的。
相反,只需传递fc的值:

out = pd.Series(fc.to_numpy(), index=fc_series.index)

字符串
或者,如果您想在适当位置修改fc_series

fc_series[:] = fc.to_numpy()


输出量:

2020-12-16    4.899912
2020-12-17    4.900162
2020-12-18    4.900141
2020-12-21    4.900142
2020-12-22    4.900142
                ...   
2023-06-26    4.900142
2023-06-27    4.900142
2023-06-28    4.900142
2023-06-29    4.900142
2023-06-30    4.900142
dtype: float64

gopyfrb3

gopyfrb32#

示例

import pandas as pd
data1 = {1888: 4.899912, 1889: 4.900162, 1890: 4.900141, 1891: 4.900142, 1892: 4.900142}
s1 = pd.Series(data1)
data2 = {'2020-12-16': float('nan'), '2020-12-17': float('nan'), '2020-12-18': float('nan'), 
         '2020-12-21': float('nan'), '2020-12-22': float('nan')}
s2 = pd.Series(data2)

字符串
第一个月

1888    4.899912
1889    4.900162
1890    4.900141
1891    4.900142
1892    4.900142
dtype: float64


s2

2020-12-16   NaN
2020-12-17   NaN
2020-12-18   NaN
2020-12-21   NaN
2020-12-22   NaN
dtype: float64

编码

如果s2都是NaN,则使用此代码。

s1.set_axis(s2.index)


产出:

2020-12-16    4.899912
2020-12-17    4.900162
2020-12-18    4.900141
2020-12-21    4.900142
2020-12-22    4.900142
dtype: float64


如果s2中的某些值是NaN,并且您希望仅在s1中的值为NaN时填充它们,请使用以下代码。

s2.fillna(s1.set_axis(s2.index))

相关问题