Применить функцию к кадру данных на основе столбца с другим кадром данных на основе индекса

Вы можете использовать мою библиотеку https://github.com/lawlietmester/webextension , чтобы сделать эту работу как в Chrome, так и в FF с помощью Firefox без обратных вызовов.

Ваш код будет выглядеть так:

Browser.runtime.onMessage.addListener( request => new Promise( resolve => {
    if( !request || typeof request !== 'object' || request.type !== "getUrls" ) return;

    $.ajax({
        'url': "http://localhost:3000/urls",
        'method': 'GET'
    }).then( urls => { resolve({ urls }); });
}) );

1
задан Peterhack 16 January 2019 в 14:45
поделиться

2 ответа

Я думаю, вам нужно pandas.merge -

temp = df1.merge(df2, left_on='color', right_index= True, how='left')
df1['apples'] = (temp['x']*(temp['apples'].pow(temp['y'])))

Вывод

       apples  color
0  141.421356      1
1  100.000000      1
2  223.606798      1
3  342.353972      2
4  358.557993      2
0
ответ дан Vivek Kalyanarangan 16 January 2019 в 14:45
поделиться

Сначала используйте DataFrame.join с левым соединением по умолчанию, а затем оперируйте с добавленными столбцами:

df = df1.join(df2, on='color')
df['apples'] = df['x'] * df['apples'] ** df['y']
print (df)
       apples  color    x    y
0  141.421356      1  100  0.5
1  100.000000      1  100  0.5
2  223.606798      1  100  0.5
3  342.353972      2  200  0.3
4  358.557993      2  200  0.3

Соединение слева, поэтому добавление к новому столбцу в df1 должно работать :

df = df1.join(df2, on='color')
df1['apples'] = df['x'] * df['apples'] ** df['y']
print (df1)
       apples  color
0  141.421356      1
1  100.000000      1
2  223.606798      1
3  342.353972      2
4  358.557993      2

Еще одна идея - использовать double map :

df1['apples'] = df1['color'].map(df2['x']) * df1['apples'] ** df1['color'].map(df2['y'])
print (df1)
       apples  color
0  141.421356      1
1  100.000000      1
2  223.606798      1
3  342.353972      2
4  358.557993      2
0
ответ дан jezrael 16 January 2019 в 14:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: