Панды Как обеспечить уникальные значения заголовка / столбца? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть Pandas df, который не был хорошо отформатирован и должен был заставить значения заголовка / столбца быть одной из строк моего оригинала df (который имеет повторяющиеся значения).Проблема в том, что заголовок теперь имеет дубликаты, например:

2.0, 2.0, 10.0, 10.0, ..., 10.0, 16.0, 16.0, 16.0, 21.0, 21.0, 21.0, ...

Я хочу убедиться, что значения заголовка / столбцов имеют уникальные значения, например:

2.0, 2.1, 10.0, 10.1, 10.2, 10.3, ... , 10.8, 10.9, 16.0, 16.1, 16.2, .... 

и так далее.

Новые значения могут превышать X.9, если это необходимо, для моих целей это не должно иметь значения, если я получу X.10, X.11, X.12, .... и т. Д.

Я пытался использовать df.columns = df.columns.unique(), но затем яполучено сообщение об ошибке, говорящее, что

«Ошибка значения: несоответствие длины: ожидаемая ось имеет 76 элементов, новые значения имеют 37 элементов».

Я также рассмотрел другие методыкак df.duplicates() и df.drop_duplicates(), но ни один из них, кажется, не в состоянии обеспечить то, что я хочу.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Назначение столбцам только для переименования.Если вы хотите просто установить подмножество столбцов и знаете, что можете использовать любой из столбцов с двойным именем, просто выполните:

df = df[df.columns.unique()] 
0 голосов
/ 14 сентября 2018

Вы можете использовать что-то вроде этого:

l = [10,10,10,18,18,19,20,21,19,20]
fin=[];d={}
for i in l:
    if d.get(i):
        d[i] = d[i]+0.1
    else:
        d[i] = 0.1
    fin.append(i+d[i])
df.columns = fin
0 голосов
/ 14 сентября 2018

Вы можете использовать cumcount

s=samepledf.columns.to_series()
samepledf.columns=s.astype(int).astype(str)+'.'+s.groupby(s).cumcount().astype(str)

samepledf
Out[199]: 
   2.0   2.1   10.0  10.1
0     1     1     1     1
1     1     1     1     1
2     1     1     1     1
3     1     1     1     1

Образец данных

samepledf=pd.DataFrame(data=[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],columns=[2.0, 2.0, 10.0, 10.0])
samepledf
Out[192]: 
   2.0   2.0   10.0  10.0
0     1     1     1     1
1     1     1     1     1
2     1     1     1     1
3     1     1     1     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...