【发布时间】:2020-04-08 16:05:39
【问题描述】:
如何识别具有相同column_value 的数据框中的列但是对于不同的列名,我们需要列出这两个列,这里我只能列出其中一个。
from pandas import DataFrame
import numpy as np
import pandas as pd
raw_data = {
'id': ['1', '2', '2', '3', '3'],
'name': ['A', 'B', 'B', 'C', 'D'],
'age' : [1, 2, 2, 3, 3],
'name_dup': ['A', 'B', 'B', 'C', 'D'],
'age_dup': [1, 2, 2, 3, 3]}
df = pd.DataFrame(raw_data, columns = ['id', 'name','age','name_dup','age_dup'])
如图所示,可以观察到 name 和 name_dup 具有相同的列值,但列名不同使用以下函数,我只能得到 name 作为输出,如下所示name_dup。
def duplicate_columns(frame):
groups = frame.columns.to_series().groupby(frame.dtypes).groups
dups = []
for t, v in groups.items():
cs = frame[v].columns
vs = frame[v]
lcs = len(cs)
for i in range(lcs):
iv = vs.iloc[:,i].tolist()
for j in range(i+1, lcs):
jv = vs.iloc[:,j].tolist()
if iv == jv:
dups.append(cs[i])
break
return dups
duplicate_columns(df)
以上代码的输出如下所示:
预期列表重复列输出
name 和 name_dup age 和 age_dup。
如果我们有列名列表,请继续删除任何一列并从list_check重命名新列:
list_check = ['name','age']
预期的数据帧
注意:不一定总是colname 是colname_dup,也可以是lname。
【问题讨论】:
-
我在代码中没有看到
age_dup列
标签: python python-3.x pandas dataframe duplicates