gpt4 book ai didi

python - 在 python 中识别具有不同列名的重复列值的列

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:23 25 4
gpt4 key购买 nike

如何识别具有相同 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'])

Data View

如图所示,可以观察到 namename_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)

以上代码的输出如下所示:

Actual Output

预期列表重复列输出

namename_dup ageage_dup

如果我们有一个列名列表,这里继续删除任何一列并从 list_check 重命名新列:

list_check  =  ['name','age']  

预期的数据帧

Expected Output

注意 : 不一定总是colname 会是colname_dup 也可以是lname

最佳答案

你的意思是:

s = df.T.duplicated().reset_index()
vals = s.loc[s[0], 'index'].tolist()
colk = df.columns.drop(vals)
print(vals)
print(colk)
print(df.drop(vals, axis=1))

输出:

['name_dup', 'age_dup']
['id', 'name', 'age']
id name age
0 1 A 1
1 2 B 2
2 2 B 2
3 3 C 3
4 3 D 3

关于python - 在 python 中识别具有不同列名的重复列值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59352457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com