Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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 按日期分组行并覆盖NaN值_Python_Pandas_Dataframe_Group By_Pandas Groupby - Fatal编程技术网

Python 按日期分组行并覆盖NaN值

Python 按日期分组行并覆盖NaN值,python,pandas,dataframe,group-by,pandas-groupby,Python,Pandas,Dataframe,Group By,Pandas Groupby,我有一个以下结构的数据框架,它针对这个问题进行了简化 A B C D E 0 2014/01/01 nan nan 0.2 nan 1 2014/01/01 0.1 nan nan nan 2 2014/01/01 nan 0.3 nan 0.7 3 2014/01/02 nan 0.4 nan nan 4 2014/01/02 0.5 nan 0.6 0.8 我这里有一系列的读数,在一天中跨越几个时间戳。B、C、D和E列表示不同的位置。我正在读取的数据被设

我有一个以下结构的数据框架,它针对这个问题进行了简化

  A          B   C   D   E
0 2014/01/01 nan nan 0.2 nan
1 2014/01/01 0.1 nan nan nan 
2 2014/01/01 nan 0.3 nan 0.7
3 2014/01/02 nan 0.4 nan nan
4 2014/01/02 0.5 nan 0.6 0.8
我这里有一系列的读数,在一天中跨越几个时间戳。B、C、D和E列表示不同的位置。我正在读取的数据被设置为在指定的时间戳从某些位置获取数据,并为其他位置填充nan值

我想做的是按时间戳对数据进行分组,我可以使用.groupby命令轻松地进行分组。从那里,我希望分组数据中的nan值被后面行中的有效值覆盖,从而获得以下结果

  A          B   C   D   E
0 2014/01/01 0.1 0.3 0.2 0.7
1 2014/01/02 0.5 0.4 0.6 0.8
如何实现这一点?

使用DataFrameGroupBy.agg尝试df.groupby:

一个简短的版本,感谢MaxU!:

In [537]: df.groupby('A', as_index=False, sort=False).sum()
Out[537]: 
            A    B    C    D    E
0  2014/01/01  0.1  0.3  0.2  0.7
1  2014/01/02  0.5  0.4  0.6  0.8
使用DataFrameGroupBy.agg尝试df.groupby:

一个简短的版本,感谢MaxU!:

In [537]: df.groupby('A', as_index=False, sort=False).sum()
Out[537]: 
            A    B    C    D    E
0  2014/01/01  0.1  0.3  0.2  0.7
1  2014/01/02  0.5  0.4  0.6  0.8
你可以先用熊猫试试

你可以先用熊猫试试


为什么我们需要np.nansum?df.groupby'A',as_index=False,sort=False.sum-应该可以做到…@MaxU Brilliant。我不确定sum是否考虑了nans。我还在学习,所以欢迎你的评论:很好的答案。这里链接到熊猫文档:我认为可以先简单使用:为什么我们需要np.nansum?df.groupby'A',as_index=False,sort=False.sum-应该可以做到…@MaxU Brilliant。我不确定sum是否考虑了nans。我还在学习,所以欢迎你的评论:很好的答案。此处链接到熊猫文档:我认为可以先简单使用:
df.groupby('A', as_index=False).first()


          A    B    C    D    E
0  1/1/2014  0.1  0.3  0.2  0.7
1  1/2/2014  0.5  0.4  0.6  0.8