Pandas DataFrame в качестве таблицы поиска для другого отдела обработки данных другой длиныPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas DataFrame в качестве таблицы поиска для другого отдела обработки данных другой длины

Сообщение Anonymous »

У меня есть небольшой пандас, содержащий данные, содержащие только несколько строк и три столбца: < /p>

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

import pandas as pd
df_size = pd.DataFrame([[0.510,0.450,0.540],
[0.899,0.820,1.150],
[1.745,1.587,2.020],
[2.020,1.745,2.405],
], columns=['diameter_mean', 'diameter_min','diameter_max'])
< /code>
Второй DataFrame содержит (намного длиннее) таблицу поиска: < /p>
df_lookup = pd.DataFrame([[0.450,0.021548],
[0.510,0.021791],
[0.540,0.022038],
[0.565,0.022289],
[0.695,0.022545],
[0.720,0.034321],
[0.770,1.292340],
[0.820,1.296070],
[0.899,1.302340],
[1.150,2.311770],
[1.361,3.325140],
[1.587,4.144621],
[1.745,3.498933],
[2.020,3.512665],
[2.405,3.610773],
], columns=['diameter', 'SMS'])
означает, что не для какой-либо записи таблицы поиска может быть точка данных в DF_SIZE существующее. df_size ['diameter_min'] и df_size ['diameter_max'] и добавить найденные значения как три новых столбца ['sms'], ['sms_min'], ['sms_max'] к Dataframe DataFrame 'DF_SIZE'. Причины -As ожидается - valueError: < /p>

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

df_size['SMS'] = df_size.merge(df_lookup, left_on='diameter_mean', right_on='diameter')
df_size['SMS_min'] = df_size.merge(df_lookup, left_on='diameter_min', right_on='diameter')
df_size['SMS_max'] = df_size.merge(df_lookup, left_on='diameter_max', right_on='diameter')
due to multiple columns that would be set to one for all three lines of code.
Alternatively I tried solutions with apply and with map but it seems that I miss something (here example for the diameter_mean-column only):

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

df_size['SMS'].apply(lambda df_lookup.SMS: df_lookup['diameter'][(df_size['diameter_mean'])].values[0])
< /code>
вызывает ошибку ключа. < /p>
Цель df_size будет выглядеть как: < /p>
df_size
'diameter_mean' 'diameter_min' 'diameter_max' 'SMS'     'SMS_min'    'SMS_max'
0.510           0.450           0.540         0.021791  0.021548     0.022038
0.899           0.820           1.150         1.302340  1.296070     2.311770
1.745           1.587           2.020         3.498933  4.144621     3.512665
2.020           1.745           2.405         3.512665  3.498933     3.610773
Необходимо ли это, кстати, что оба фрейма имеют сильное монотонное поведение в термах параметра поиска (= диаметр)?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ent-length
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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