DataType проверяет и назначает динамические значения в пандахPython

Программы на Python
Anonymous
 DataType проверяет и назначает динамические значения в пандах

Сообщение Anonymous »

У меня есть алгоритм обработки данных, где я хочу установить значения для ячейки на основе значения в другой строке. Все в одном и том же столбце. Мы можем сгруппировать эти строки по столбцу EID. Хорошее (то есть бланк или нет типа int/double), а не принимаю макс, я назначаю вместо этого это проблемное значение. Если есть несколько значений с неправильным типом данных, выберите любой из них. Один 1 строка будет иметь значение флага 1. < /P>
Итак, короче говоря, назначить (переопределить, если вам нужно) все максимальные значения для группы рядов с флагом = 1, а затем, как только сделано, отбросьте ряды, где флаг не является 1.

Код: Выделить всё

Transform_fields = ('LV1','LV2')

for i in range(len(Transform_fields)):

field_name = Transform_fields[i]

data[field_name + '_org'] = data[field_name]

try:
data[field_name] = data[field_name].astype('float')

data[field_name + '_max'] = data.groupby(['eid'])[field_name].transform(max)

data[field_name + '_max'].fillna(data[field_name + '_org'], inplace = True)

data[field_name] = data.groupby('eid')[field_name + '_max'].transform(lambda x: 0 if (x == 0).any() else x)
except Exception as e:

print('Error reading data from file ' +  str(e) + ': \n')

#need to update the value of the field of the record where the PF is 1 in that group

#finally,
data = data[data['pf'] == '1']
< /code>
Некоторые образцы данных, показанные этой простой программой ниже, чтобы отобразить пример ввода DF и полученный DF -< /p>
import pandas as pd

df_in = pd.DataFrame({'eid': [10001, 10001, 10002, 10002, 10003, 10004, 10004, 10004],
'LV1': ['', -8888, -8888, -8888, -8888, '&', 33, 'TIM'],
'LV2': [-8888, 'GRAY', 'blue', 9, 22, 55, 68, 166],
'PF': [1, 0, 1, 0, 1, 1, 0, 0]})
print('Original Dataframe:')
print(df_in)

df_out = pd.DataFrame({'eid': [10001, 10002,  10003, 10004],
'LV1': ['', -8888, -8888, '&'],
'LV2': ['GRAY', 'blue',  22, 166],
'PF': [1, 1, 1, 1]})

print("\nTransformed Dataframe:")
print(df_out)
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-pandas

Вернуться в «Python»