pandas基于Index加入两个数据帧

use*_*244 2 python dataframe python-2.7 pandas

我试图基于数据帧的索引值加入两个数据帧但是,我的结果产生NaN,然后​​是重复索引值的值.

print st
Run Code Online (Sandbox Code Playgroud)

结果(存储在数据帧系列中,只有索引如下)

index
1499054400000
1499140800000
1499227200000
1499313600000
1499400000000
Run Code Online (Sandbox Code Playgroud)

另一个数据帧如下

print dtest2
Run Code Online (Sandbox Code Playgroud)

这导致(与上述索引相同)

                1
index   
1499227200000   33.48
1499400000000   35.71
Run Code Online (Sandbox Code Playgroud)

当我合并两个数据帧时,我试图获得以下内容

结果需要

index            1
1499054400000    0.0
1499140800000    0.0
1499227200000    33.48
1499313600000    0.0
1499400000000    35.71
Run Code Online (Sandbox Code Playgroud)

但是,当我连接如下

pd.concat([st,dtest2],ignore_index=False)
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

                1
index   
1499054400000   NaN
1499140800000   NaN
1499227200000   NaN
1499313600000   NaN
1499400000000   NaN
1499227200000   33.48
1499400000000   35.71
Run Code Online (Sandbox Code Playgroud)

piR*_*red 5

IIUC ......使用 pd.DataFrame.reindex

dtest2.reindex(st.index, fill_value=0)

                   1
index               
1499054400000   0.00
1499140800000   0.00
1499227200000  33.48
1499313600000   0.00
1499400000000  35.71
Run Code Online (Sandbox Code Playgroud)

但是,您可能会遇到一个隐藏的问题,即类型不同.您可以通过使用astype它们来确保所有索引都相同.

dtest2.index = dtest2.index.astype(str)
st.index = st.index.astype(str)

dtest2.reindex(st.index, fill_value=0)

                   1
index               
1499054400000   0.00
1499140800000   0.00
1499227200000  33.48
1499313600000   0.00
1499400000000  35.71
Run Code Online (Sandbox Code Playgroud)

要么

dtest2.index = dtest2.index.astype(int)
st.index = st.index.astype(int)

dtest2.reindex(st.index, fill_value=0)

                   1
index               
1499054400000   0.00
1499140800000   0.00
1499227200000  33.48
1499313600000   0.00
1499400000000  35.71
Run Code Online (Sandbox Code Playgroud)