类似,不同的最终蟒蛇

时间:2020-03-17 07:35:28

标签: pandas duplicates multiple-columns

我之前曾问过这个问题,但没有得到适当的答复,现在尝试另作尝试。

例如: 如果我有一个名为A45-443-FGH-02A的列和另一个名为A45-443-FGH-02B的列。它们“重复像”,但末尾带有不同的字母。 我只需要选择结尾处带有B的这些字符,并且如果列名末尾具有“ A”,则必须将其删除。 我本来想按长度选择,但没有成功。

3 个答案:

答案 0 :(得分:1)

假设您在A和B之间进行了检查,并且只需要具有B的属性。

df.loc[df['yourColumnName'].apply(lambda x: x.endswith('B'))]

答案 1 :(得分:1)

IIUC:

df = pd.DataFrame(columns=["A45-443-FGH-02B","A45-443-FGH-02A","ABC","CDE"])

s = df.columns.sort_values()

print (df[[i[-1] for i in s.groupby(s.str[:-1]).values()]])

#
Empty DataFrame
Columns: [A45-443-FGH-02B, ABC, CDE]
Index: []

答案 2 :(得分:1)

删除以A结尾的重复的列名,如果不重复则不行:

c = ['A45-443-FGH-02A','A45-443-FGH-02B','B45-02A']

df = pd.DataFrame(columns=c)
print (df)
Empty DataFrame
Columns: [A45-443-FGH-02A, A45-443-FGH-02B, B45-02A]

m1 = df.columns.str[:-1].duplicated(keep=False)
m2 = df.columns.str.endswith('A')

df = df.loc[:, (m1 & ~m2) | ~m1]
print (df)
Empty DataFrame
Columns: [A45-443-FGH-02B, B45-02A]
Index: []

如果要使用像A这样的列:

c = ['A45-443-FGH-02A','A45-443-FGH-02B','B45-02A']

df = pd.DataFrame({'A':c})
print (df)
                 A
0  A45-443-FGH-02A
1  A45-443-FGH-02B
2          B45-02A

m1 = df.A.str[:-1].duplicated(keep=False)
m2 = df.A.str.endswith('A')

df = df[(m1 & ~m2) | ~m1]
print (df)
                 A
1  A45-443-FGH-02B
2          B45-02A
相关问题