有没有一种方法可以基于两个数据帧的值的等价性在Pandas数据帧中添加新列?

2024-05-16 19:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,一个叫做df,另一个叫做df_pag。df有以下列:

^{tb1}$

另一方面,df_pag具有以下立柱:

^{tb2}$

这些数据帧源自不同的数据挖掘过程。我想向df添加一个名为“Paginação”的新列,其中它的行值从dfāu pag中提取,当且仅当df['Projetos']=dfāpag['Projetos']、df['Ano/Volume']=dfāpag['Ano']和df['Unidades']=dfāpag['Unidades']

以下是我所做的:

for i in range(len(df.index)):
    for j in range(len(df_pag.index)):
        if df['Projeto'][i] == df_pag['Projeto'][j] and df['Ano/Volume'][i] == df_pag['Ano'][j] and df['Unidade'][i] == df_pag['Unidade'][j]:
            df['Paginação'][i] = df_pag['Páginação'][j]

PS。这是我关于StackOverflow的第一个问题,因此,如果有任何不清楚的地方,请告诉我


Tags: and数据indfforindexlenrange
1条回答
网友
1楼 · 发布于 2024-05-16 19:31:43

嗨,这种方法怎么样

result_df = ((df['Projetos'] == df_pag ['Projetos']) == (df['Ano/Volume'] == df_pag ['Ano'])) == (df['Unidades'] == df_pag ['Unidades'])
df['Paginação'] = df_pag ['Paginação'][result_df]

这将在Paginação列中的条件不满足的位置放置NaN

如果您想要任何其他值来代替NaN,请使用.fillna()如下所示:

result_df = ((df['Projetos'] == df_pag ['Projetos']) == (df['Ano/Volume'] == df_pag ['Ano'])) == (df['Unidades'] == df_pag ['Unidades'])
df['Paginação'] = df_pag ['Paginação'][result_df]
df['Paginação'] = df['Paginação'].fillna('my_value')

相关问题 更多 >