gpt4 book ai didi

python - 将函数应用于基于列的数据框和基于索引的其他数据框

转载 作者:行者123 更新时间:2023-12-01 08:26:22 25 4
gpt4 key购买 nike

我想根据苹果列的颜色对它们的值执行一些操作(例如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

关于python - 将函数应用于基于列的数据框和基于索引的其他数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com