Для меня правильно работает, если существует только один id
столбец:
set_id = set(df["Id"])
print(set_id)
{'1-wYH2LEcmk', '08QMXEQbEWw', '0pPU8CtwXTo', '0ANuuVrIWJw', '-KkJz3CoJNM'}
Но если есть еще имена столбцов id
, тогда df['id']
возвращает DataFrame
, поэтому set(df["Id"])
возвращает уникальный имена столбцов:
#test for 2 columns with sample data
df = pd.concat([df, df], axis=1)
print (df["Id"])
Id Id
0 -KkJz3CoJNM -KkJz3CoJNM
1 08QMXEQbEWw 08QMXEQbEWw
2 0ANuuVrIWJw 0ANuuVrIWJw
3 0pPU8CtwXTo 0pPU8CtwXTo
4 1-wYH2LEcmk 1-wYH2LEcmk
set_id = set(df["Id"])
print(set_id)
{'Id'}
Поскольку:
L = list(df["Id"])
print(L)
['Id', 'Id']
работает так же, как
L = list(df["Id"].columns)
print(L)
['Id', 'Id']
и аналогично для наборов:
set_id = set(df["Id"].columns)
print(set_id)
{'Id'}
Возможно решение для дедупликации столбцов:
c = df.columns.to_series()
df.columns += c.groupby(c).cumcount().astype(str).radd('.').replace('.0','')
print (df)
Id Id.1
0 -KkJz3CoJNM -KkJz3CoJNM
1 08QMXEQbEWw 08QMXEQbEWw
2 0ANuuVrIWJw 0ANuuVrIWJw
3 0pPU8CtwXTo 0pPU8CtwXTo
4 1-wYH2LEcmk 1-wYH2LEcmk
Или, если всегда одинаковые значения, удалите дубликаты столбцов:
df = df.loc[:, ~df.columns.duplicated()]
print (df)
Id
0 -KkJz3CoJNM
1 08QMXEQbEWw
2 0ANuuVrIWJw
3 0pPU8CtwXTo
4 1-wYH2LEcmk