仅当列值相同时才合并数据框

迈克尔·索科伊(Michael Sokoij)

我有两个数据框dfdf_copy我想从中复制数据df_copy,但前提是数据也相同。我怎么做?

import pandas as pd

d = {'Nameid': [100, 200, 300, 100]
     , 'Name': ['Max', 'Michael', 'Susan', 'Max']
     , 'Projectid': [100, 200, 200, 100]}

df = pd.DataFrame(data=d)
display(df.head(5))

df['nameid_index'] = df['Nameid'].astype('category').cat.codes
df['projectid_index'] = df['Projectid'].astype('category').cat.codes
display(df.head(5))

df_copy = df.copy()

df.drop(['Nameid', 'Name', 'Projectid'], axis=1, inplace=True)
df = df.drop([1, 3])
display(df.head(5))

df

在此处输入图片说明

df_copy

在此处输入图片说明

我想要的是

在此处输入图片说明


我看着熊猫合并101

df.merge(df_copy, on=['nameid_index', 'projectid_index'])

但是我得到了这个结果

在此处输入图片说明

同一行是两次,我只想要一次。

耶斯列尔

DataFrame.drop_duplicates首先使用

df1 = (df.drop_duplicates(['nameid_index', 'projectid_index'])
         .merge(df_copy, on=['nameid_index', 'projectid_index']))

如果需要通过两个DataFrames中列名的交集合并on则应删除参数:

df1 = df.drop_duplicates(['nameid_index', 'projectid_index']).merge(df_copy)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅当行和列值相同时才添加两个pandas数据框值

仅当 3 列的值相同时才返回行

仅当使用MySQL的一个表中的列值与另一表中的列值相同时,才如何从两个表返回数据?

仅当一列中的值相同时,才遍历DataFrame中的行并执行diff方法

仅当值相同时,foreach循环内的值才求和

熊猫根据列中的相同值合并数据框

R数据:仅当y值相同时,才将x值平均为一个新向量

仅当值相同时才锁定?

在两列的基础上合并两个数据框,同时考虑 nan 值

Python,Pandas 数据框,合并具有相同两列值的数据框的行并聚合行中的数据

仅当其他表中的值相同时才插入新的 SQL 行

仅当所有匹配记录的值都相同时才选择记录

将列中具有相同值的行合并为数据框中的单行

在列中合并2个具有相同值的数据框

仅当值存在时,才通过vlookup另一个数据框替换列中的值

仅当两个列都不相同时才插入

根据列值合并数据框

如何合并数据框列中的值

从仅某些列具有相同值的Pandas数据框中删除重复的行

仅当记录不存在时才将行追加/插入/合并到数据框

如何查询具有相同字段的两个表,仅当字段值相同时才返回id

仅当列值与其他列不同时才选择

PostgreSQL:仅当列中的值不同时才选择最新条目

合并两个数据框并仅保留匹配的列

合并数据框的列

根据列值合并数据框中的行值

仅当记录包含所有行的相同列值时,才选择记录

仅当所有连接的条具有相同的列值时才返回foo

仅当其他行具有相同的列值时,MySQL 查询才检索行