我有两个数据帧,如下所示:

df1 = 

                        A     B     C      D       E       F 
timestamp               
2022-04-08 10:07:00     40    50    NaN    50     NaN    NaN
2022-04-08 10:07:01     70    80    80     10     NaN    NaN
2022-04-08 10:07:02     200   220   NaN    10     10     NaN


df2 = 

             A_1       B_1    
                
C            10        10
D            20        10   
E            30        20 
F            5         15

如你所见,df1columns C,D,E和F是df2index.我想进行如下操作:

df1 = 

                        A     B     C      D       E       F    Sum_C  Sum_D   Sum_E   Sum_F
timestamp               
2022-04-08 10:07:00     40    50    NaN    50     NaN    NaN    NaN    120     NaN     NaN
2022-04-08 10:07:01     70    80    80     10     NaN    NaN   170     180     NaN     NaN
2022-04-08 10:07:02     200   220   NaN    10     10     NaN    NaN    450     470     NaN

在这里

df1的第一行中,有一个column D的值.column A and B的值分别为40和50.现在,由于在df1column D中存在一个值,因此 Select df2的索引D,注意对应的a_1和B_1,在本例中为20和10.

如果有更简单的方法,我将不胜感激.

提前谢谢!

EDIT:我不想添加从A、B、A_1、B_1列中获得的值,而是想执行以下操作:

import geopy.distance as distance
P1 = (A,B)
P2 = (A_1,B_1)

使用distance.great_circle(P1,P2)计算距离,并将结果存储在df1中.

推荐答案

IIUC,你可以使用:

d = df1[df2.index].notna()
out = (df1
       .join(d.mul(df2.sum(1)) # add sum from df2
              .add(df1[['A', 'B']].sum(1), axis=0) # add data from A/B
              .where(d)                            # keep only original non-NAN
              .add_prefix('Sum_')
            )
       )

输出:

                       A    B     C   D     E   F  Sum_C  Sum_D  Sum_E  Sum_F
timestamp                                                                    
2022-04-08 10:07:00   40   50   NaN  50   NaN NaN    NaN    120    NaN    NaN
2022-04-08 10:07:01   70   80  80.0  10   NaN NaN  170.0    180    NaN    NaN
2022-04-08 10:07:02  200  220   NaN  10  10.0 NaN    NaN    450  470.0    NaN

Python相关问答推荐

重新匹配{ }中包含的文本,其中文本可能包含{{var}

通过Selenium从页面获取所有H2元素

使可滚动框架在tkinter环境中看起来自然

运行终端命令时出现问题:pip start anonymous"

将9个3x3矩阵按特定顺序排列成9x9矩阵

Python+线程\TrocessPoolExecutor

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

Numpyro AR(1)均值切换模型抽样不一致性

如果包含特定值,则筛选Groupby

按条件添加小计列

如何获得满足掩码条件的第一行的索引?

为什么在Python中00是一个有效的整数?

在matplotlib中重叠极 map 以创建径向龙卷风图

有没有一种方法可以在朗肯代理中集成向量嵌入

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

如何在Python中创建仅包含完整天数的月份的列表

对于数组中的所有元素,Pandas SELECT行都具有值

如何在Python中画一个只能在对角线内裁剪的圆?

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

Django-修改后的管理表单返回对象而不是文本