Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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 在数据帧中合并行_Python_Pandas - Fatal编程技术网

Python 在数据帧中合并行

Python 在数据帧中合并行,python,pandas,Python,Pandas,我有数据框 Date CUSIP Asset Liability 01-01-1990 A 1 NaN 01-01-1990 A Nan 2 02-01-1990 A 3 2 01-01-1990 B Nan 2 01-01-1990 B 1 2 是否有任何方法将其组合成: Date C

我有数据框

Date         CUSIP   Asset   Liability
01-01-1990     A       1        NaN
01-01-1990     A      Nan        2
02-01-1990     A       3         2
01-01-1990     B      Nan        2
01-01-1990     B       1         2
是否有任何方法将其组合成:

Date         CUSIP   Asset   Liability
01-01-1990     A       1         2
02-01-1990     A       3         2
01-01-1990     B       1         2
我想到的方法是使用groupby[CUSIP,Date].agg函数

其中我应用了一个函数,其中maxnan,3=3


有更简单的方法吗?

是的!实现max with nan方法的问题是速度太慢。需要循环遍历列表并放弃nan值。我有时讨厌python处理nan的方式……为了确保数据中没有错误,您还可以确保在任何给定日期只有一个CUSIP。假设上面的结果称为result,那么result.groupby['Date','CUSIP']['CUSIP'].count.max应该返回1。感谢您的提示。我正在运行这个。这很慢。正向填充和反向填充总是这么慢吗?df.info的输出是什么?列是资产和负债浮动吗?日期列的类型是什么?此外,drop_副本可能会减慢速度。试着不用它,看看是否有改进。如果是这样的话,并且您已经检查了数据,以确保上面我的评论中没有重复,您可以再次分组。df.groupby['Date','CUSIP'].applylambda组:group.ffill.bfill.groupby['Date','CUSIP'].firstRangeIndex:501896个条目,0到501895个数据列总计4列:日期501896非空datetime64[ns]CUSIP 501372非空对象资产386228非空浮点64负债385416非空浮点64数据类型:datetime64[ns]1,浮点642,反对意见1
>>> df.groupby(['Date', 'CUSIP']).apply(lambda group: group.ffill().bfill()).drop_duplicates()
         Date CUSIP Asset  Liability
0  01-01-1990     A     1          2
2  02-01-1990     A     3          2
3  01-01-1990     B     1          2