У меня есть данные и имеет преобразование с использованием dataframe панд:Изменения dataframe панды на основе одной серии
import pandas as pd
d = [
(1,70399,0.988375133622),
(1,33919,0.981573492596),
(1,62461,0.981426807114),
(579,1,0.983018778374),
(745,1,0.995580488899),
(834,1,0.980942505189)
]
df_new = pd.DataFrame(e, columns=['source_target']).sort_values(['source_target'], ascending=[True])
и мне нужно построить ряд для отображения столбца source
и target
в другую
e = []
for x in d:
e.append(x[0])
e.append(x[1])
e = list(set(e))
df_new = pd.DataFrame(e, columns=['source_target'])
df_new.source_target = (df_new.source_target.diff() != 0).cumsum() - 1
new_ser = pd.Series(df_new.source_target.values, index=new_source_old).drop_duplicates()
так я получаю серию :
source_target
1 0
579 1
745 2
834 3
33919 4
62461 5
70399 6
dtype: int64
Я пробовал изменить dataframe df_beda
на основе new_ser
серии с помощью:
df_beda.target = df_beda.target.mask(df_beda.target.isin(new_ser), df_beda.target.map(new_ser)).astype(int)
df_beda.source = df_beda.source.mask(df_beda.source.isin(new_ser), df_beda.source.map(new_ser)).astype(int)
но результата:
source target weight
0 0 70399 0.988375
1 0 33919 0.981573
2 0 62461 0.981427
3 579 0 0.983019
4 745 0 0.995580
5 834 0 0.980943
это неправильно, идеальный результат:
source target weight
0 0 6 0.988375
1 0 4 0.981573
2 0 5 0.981427
3 1 0 0.983019
4 2 0 0.995580
5 3 0 0.980943
может быть, кто-нибудь может помочь мне показать, где моя ошибка
Thanks
я есть обновить мой вопрос ... ТНХ :) – ihsansat
WAW .... это Скоростной работа ... ТНХ :) – ihsansat
Привет @ Happy001, он не использует серии права? если я хочу вернуться из вашего результата в исходное значение, как это сделать? – ihsansat