将功能应用于基于列的数据框以及基于索引的其他数据框

彼得哈克

我想x*apples^y根据其颜色对列苹果的值执行一些操作(例如)。相应的值在单独的数据帧中:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'apples': [2, 1, 5, 6, 7], 'color': [1, 1, 1, 2, 2]})
df2 = pd.DataFrame({'x': [100, 200], 'y': [0.5, 0.3]}).set_index(np.array([1, 2]), 'color')

我正在寻找以下结果:

   apples        color
0  100*2^0.5      1
1  100*1^0.5      1
2  100*5^0.5      1
3  200*6^0.3      2
4  200*7^0.3      2
耶斯列尔

首先使用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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas数据框基于其他列值将功能应用于列字符串

数据框基于其他列创建新列

将功能应用于数据框的所有元素

将功能应用于数据框中的分组行

将功能应用于熊猫数据框以扫描列/单元格中的列表,具体取决于其他列/单元格

将功能应用于熊猫数据框

将功能应用于数据框

数据框:基于值应用于两列

如何使用for循环基于分组变量将多参数函数应用于数据框?

基于最左端索引将相关数学运算应用于多索引数据框中的列

根据其他列中的值将函数应用于列中数据框行的子集

将索引列表应用于数据框列表

将功能应用于数据框中的特定行

将功能应用于数据框列?

Pandas数据框仅将lambda应用于数据框内的选定行(基于条件)

将多种功能应用于R中的数据框

将功能应用于熊猫数据框的列

基于用户输入将多个过滤器应用于数据框的pythonic方法

使用对多个列应用功能,基于其他列的值将新列创建到数据框

熊猫数据框将功能应用于整个列

将函数应用于pandas数据框中的所有其他列

R:将功能应用于数据框的每个元素

使用数据框列表将功能应用于列名

将功能应用于数据框的列(列为列表)

Appy/lambda 将函数应用于其他列中具有特定条件的数据框

Python数据框基于其他id列创建索引列

Python:基于其他列扩展数据框列值

基于其他列舍入数据框列

将一个数据框中的百分比应用于其他数据框中的列以创建新数据框