Как сделать операции внутри каждого столбца значения pd.Dataframe? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть pandas Dataframe , и я хочу записать в столбец 'final_data['130 + 71444']' результат после make для каждого значения внутри ячеек следующую математическую операцию:

final = pd.read_csv(path, header=0, parse_dates=True, index_col="Tagname")
final_data = pd.DataFrame(final)

enter image description here


Отредактировано : Я пытался:

final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']

Но следующее отображается ошибка:

TypeError: unsupported operand type(s) for /: 'str' and 'str'

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Использование:

final_data['130 + 71444'] = (final_data['130.c'].astype(float) + final_data['7144.c'].astype(float))/final_data['c'].astype(float)

Если не работает код, указанный выше, поскольку некоторые нечисловые значения c используют to_numeric с erriors='coerce' для преобразования этих значений в пропущенные значения:

final_data['130 + 71444'] = (pd.to_numeric(final_data['130.c'], errors='coerce') + pd.to_numeric(final_data['7144.c'], errors='coerce') )/pd.to_numeric(final_data['c'], errors='coerce') 
0 голосов
/ 13 марта 2020

Это легко. Это как вы определили: РЕДАКТИРОВАТЬ Сначала вы должны изменить тип столбца d. Я использую здесь float.

final_data['130.c'] = final_data['130.c'].astype('float32')
final_data['7144.c'] = final_data['7144.c'].astype('float32')
final_data['c'] = final_data[c'].astype('float32')


final_data['130 + 71444'] = (final_data['130.c'] + final_data['7144.c'])/final_data['c']

это возможно, потому что у вас есть массив numpy в качестве столбца в вашем фрейме данных. См. Также документы pandas и numpy.

...