2016-02-20 59 views
1

我是工作在时间序列追加的问题,我发现非常奇特的行为大熊猫数据帧时间序列与大熊猫数据帧

以下时,指数是不是时间序列

import pandas as pd 
df = pd.DataFrame({"a":[1,2,3], "b":[31,41,51],"c":[31,52,23]}, index=["z", "y", "x"]) 
df1 = pd.DataFrame({"a":[41,55,16]}, index=["w", "v", "u"]) 
df2 = pd.DataFrame({"b":[24,3,57]}, index=["w", "v", "u"]) 
df3 = pd.DataFrame({"c":[111,153,123]}, index=["w", "v", "u"]) 
df = df.append(df1) 
dfx.ix[df2.index, "b"] = df2 

输出代码工作df

a b c 
z 1 31 31 
y 2 41 52 
x 3 51 23 
w 41 24 NaN 
v 55 3 NaN 
u 16 57 NaN 

然而,这并不时有datetime64[ns]指数或工作时,尺寸太大

除了下面的命令工作,当有datetime64[ns]指数

df = df.append(df1) 
df["b"][df2.index] = df2 

为什么它是什么?

回答

1

您可以尝试fillna

df = df.append(df1) 
print df.fillna(df2) 
    a b c 
z 1 31 31 
y 2 41 52 
x 3 51 23 
w 41 24 NaN 
v 55 3 NaN 
u 16 57 NaN 

Datatimeindex测试它和它的作品非常好:

import pandas as pd 

df = pd.DataFrame({"a":[1,2,3], "b":[31,41,51],"c":[31,52,23]}, index=["z", "y", "x"]) 
df.index = pd.date_range('20160101',periods=3,freq='T') 

df1 = pd.DataFrame({"a":[41,55,16]}, index=["w", "v", "u"]) 
df1.index = pd.date_range('20160104',periods=3,freq='T') 

df2 = pd.DataFrame({"b":[24,3,57]}, index=["w", "v", "u"]) 
df2.index = pd.date_range('20160104',periods=3,freq='T') 

df3 = pd.DataFrame({"c":[111,153,123]}, index=["w", "v", "u"]) 
df3.index = pd.date_range('20160104',periods=3,freq='T') 
df = df.append(df1) 
print df 
         a b c 
2016-01-01 00:00:00 1 31 31 
2016-01-01 00:01:00 2 41 52 
2016-01-01 00:02:00 3 51 23 
2016-01-04 00:00:00 41 NaN NaN 
2016-01-04 00:01:00 55 NaN NaN 
2016-01-04 00:02:00 16 NaN NaN 

print df.fillna(df2) 
         a b c 
2016-01-01 00:00:00 1 31 31 
2016-01-01 00:01:00 2 41 52 
2016-01-01 00:02:00 3 51 23 
2016-01-04 00:00:00 41 24 NaN 
2016-01-04 00:01:00 55 3 NaN 
2016-01-04 00:02:00 16 57 NaN 

df.ix[df2.index, "b"] = df2 
print df 
         a b c 
2016-01-01 00:00:00 1 31 31 
2016-01-01 00:01:00 2 41 52 
2016-01-01 00:02:00 3 51 23 
2016-01-04 00:00:00 41 24 NaN 
2016-01-04 00:01:00 55 3 NaN 
2016-01-04 00:02:00 16 57 NaN 
+0

它工作得很好'熊猫:0.17.1' 。什么是“熊猫”的版本?检查它'print pd.show_versions()'。如果你的记忆体很小而且'df'太大,可能会出现下一个问题。 – jezrael