Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中连接2个数据帧并在结果中保留NAN?_Python_Pandas_Dataframe_Nan - Fatal编程技术网

如何在Python中连接2个数据帧并在结果中保留NAN?

如何在Python中连接2个数据帧并在结果中保留NAN?,python,pandas,dataframe,nan,Python,Pandas,Dataframe,Nan,我有一个数据帧,它缺少数据的时间索引,我希望将其上采样到15分钟的间隔,并在上采样点保持NAN。你知道怎么做吗?其思想是用正确的timeseries索引构建一个空数据帧,然后用好的值填充它们。 以下是一个玩具数据集示例: 将熊猫作为pd导入 df_数据={“A”:{“150322700000”:0.3,“15032286000”:0.64,“1503232200000”:0.54,“1503234000000”:0.7,“1503237600000”:0.78},“B”:{“1503227000

我有一个数据帧,它缺少数据的时间索引,我希望将其上采样到15分钟的间隔,并在上采样点保持NAN。你知道怎么做吗?其思想是用正确的timeseries索引构建一个空数据帧,然后用好的值填充它们。 以下是一个玩具数据集示例:

将熊猫作为pd导入
df_数据={“A”:{“150322700000”:0.3,“15032286000”:0.64,“1503232200000”:0.54,“1503234000000”:0.7,“1503237600000”:0.78},“B”:{“150322700000”:0.46,“150322860000”:0.52,“1503232200000”:0.54,“1503234000000”:0.58,“1503237600000”:0.58},“C”:{“150322700000”:0.04,“150322600000”:0.04,“150323400000”:150320000;“323400000”:15076000:“15076000”:15076000:”D:“15076000:”{"1503227700000":0.0,"1503228600000":0.0,"1503232200000":0.0,"1503234000000":0.0,"1503237600000":0.0}}'
左
出[1]:
A、B、C、D
2017-08-20 11:15:00  0.30  0.46  0.04  0
2017-08-20 11:30:00  0.64  0.52  0.04  0
2017-08-20 12:30:00  0.54  0.54  0.00  0
2017-08-20 13:00:00  0.70  0.58  0.10  0
2017-08-20 14:00:00  0.78  0.58  0.00  0
时间参考=pd.日期范围(开始时间=2017-08-20 11:15:00',结束时间=2017-08-20 14:00:00',频率=15分钟)
df_right=pd.DataFrame(索引=time_ref,列=['A','B','C','D'])
对
出[54]:
A、B、C、D
2017-08-20 11:15:00楠楠
2017-08-20 11:30:00楠楠
2017-08-20 11:45:00楠楠
2017-08-20 12:00:00楠楠
2017-08-20 12:15:00楠楠
2017-08-20 12:30:00楠楠
2017-08-20 12:45:00楠楠
2017-08-20 13:00:00楠楠
2017-08-20 13:15:00楠楠
2017-08-20 13:30:00楠楠
2017-08-20 13:45:00楠楠
2017-08-20 14:00:00楠楠
我想加入这些,这样我就有了这样一个数据帧:

df_data_join='{“A”:{“150322770000”:0.30,“150322860000”:0.64,“1503229500000”:null,“1503230400000”:null,“1503231300000”:null,“1503232200000”:0.54,“1503233100000”:null,“1503234000000”:0.70,“1503234900000”:null,“1503235800000”:null,“1503236700000”:null,“1503237600000”:0.78},“B”:{“150322770000”:0.46,“150322600000”:0:0.52,”1503229500000:null,“1503230400000”:null,“1503231300000”:null,“1503232200000”:0.54,“1503233100000”:null,“1503234000000”:0.58,“1503234900000”:null,“1503235800000”:null,“1503236700000”:null,“1503237600000”:0.58},“C”:{“150322700000”:0.04,“150322860000”:0.04,“15032229500000”:null,“1503230400000”:null,“1503231300000”:null1503232200000:0.00,“1503233100000”:空,“1503234000000”:0.10,“1503234900000”:空,“1503235800000”:空,“1503236700000”:空,“1503237600000”:0.00},“D”:{“150322700000”:0,“150322860000”:0,“15032229500000”:空,“1503230400000”:空,“1503231300000”:空,“1503232200000”:0,“1503233100000”:空,“1503234000000”:0,“1503234900000”:空1503235800000:null,“1503236700000”:null,“1503237600000”:0}
df_join=pd.read_json(df_data_join)
df_连接
出[10]:
A、B、C、D
2017-08-20 11:15:00  0.30  0.46  0.04  0.0
2017-08-20 11:30:00  0.64  0.52  0.04  0.0
2017-08-20 11:45:00楠楠
2017-08-20 12:00:00楠楠
2017-08-20 12:15:00楠楠
2017-08-20 12:30:00  0.54  0.54  0.00  0.0
2017-08-20 12:45:00楠楠
2017-08-20 13:00:00  0.70  0.58  0.10  0.0
2017-08-20 13:15:00楠楠
2017-08-20 13:30:00楠楠
2017-08-20 13:45:00楠楠
2017-08-20 14:00:00  0.78  0.58  0.00  0.0
我尝试过合并、合并、替换、插值、上采样,但都没有达到目的。我需要数据帧中的NaN,以便在以后的处理中确定数据未填充的位置

非常感谢您的帮助。

您可以直接在缺少时间索引的数据上使用,例如:

print (pd.read_json(df_data).resample('15T').asfreq())
                       A     B     C    D
2017-08-20 11:15:00  0.30  0.46  0.04  0.0
2017-08-20 11:30:00  0.64  0.52  0.04  0.0
2017-08-20 11:45:00   NaN   NaN   NaN  NaN
2017-08-20 12:00:00   NaN   NaN   NaN  NaN
2017-08-20 12:15:00   NaN   NaN   NaN  NaN
2017-08-20 12:30:00  0.54  0.54  0.00  0.0
2017-08-20 12:45:00   NaN   NaN   NaN  NaN
2017-08-20 13:00:00  0.70  0.58  0.10  0.0
2017-08-20 13:15:00   NaN   NaN   NaN  NaN
2017-08-20 13:30:00   NaN   NaN   NaN  NaN
2017-08-20 13:45:00   NaN   NaN   NaN  NaN
2017-08-20 14:00:00  0.78  0.58  0.00  0.0

如果你绝对想使用
df_right
,那么使用
df_left
也可以使用
df_right。fillna(df_left)

哦,我的上帝……多么优雅。非常感谢。