【发布时间】:2017-05-26 19:28:51
【问题描述】:
我有一个数据框,它在几列(姓名、年龄、性别)上有重复的行。我想识别所有这样的行并从每一行中提取一个唯一的列值(account_no)。这些列值将被拟合到一个新的数据框中(包含源和目标列)。
import pandas as pd
data={'name':['a','b','c','b','d','a','b','a','a'],'age':[28,22,22,22,25,28,22,22,22],'gender':['m','m','m','m','m','m','m','m','m'],'account_no':[101,102,103,104,105,106,107,108,109]}
dataset = pd.DataFrame(data,columns=['name','age','gender','account_no'])
我正在努力实现:
source target
101 106
102 104
104 107
107 102
108 109
我试图找到重复项并使用 groupby 对它们进行分组,但无法找到一种方法将它们放入由列 source 和 target 组成的新数据框中。
import pandas as pd
data={'name':['a','b','c','b','d','a','b','a','a'],'age':[28,22,22,22,25,28,22,22,22],'gender':['m','m','m','m','m','m','m','m','m'],'account_no':[101,102,103,104,105,106,107,108,109]}
dataset = pd.DataFrame(data,columns=['name','age','gender','account_no'])
out = pd.DataFrame(columns=['Source','Target'])
df_res = pd.DataFrame()
duplicates = dataset[dataset.duplicated(subset=['name','age','gender'],keep=False)]
df_res = pd.concat(g for _, g in duplicates.groupby(['name','age','gender']) if len(g) > 1)
我无法从重复行中找到适合 account_no 到单行输出数据框的方法。 请提出一种方法。谢谢。
【问题讨论】:
标签: python pandas dataframe duplicates