根据文本将值从一个数据帧平均分配到另一个数据帧

问题描述 投票:1回答:3

我有两个如下所示的数据框

import pandas as pd 
import numpy as np

random = np.random.RandomState(seed=123)

columns = ['Assessment Type', 'Weight %']

assessment = ['Mid-Term', 'Quiz', 'Final Exam', 'Assignment']

wight = [30, 20, 35, 15]

df1 = pd.DataFrame(np.column_stack([assessment, wight]),
                           columns=columns)

df1['Weight %'] = df1['Weight %'].apply(int)

df2 = pd.DataFrame(random.randint(0, 100, size=(4, 8)), columns=list('ABCDEFGH'))

df2.iloc[0, :] = ['', 'Mid-Term', 'Quiz', 'Mid-Term', 'Quiz', '', 'Final Exam', '']
df2.iloc[1, :] = ['' for i in range(df2.columns.size)]

df1 =

  Assessment Type  Weight %
0        Mid-Term        30
1            Quiz        20
2      Final Exam        35
3      Assignment        15

df2 =

    A         B     C         D     E   F           G   H
0      Mid-Term  Quiz  Mid-Term  Quiz      Final Exam
1
2  78        36    96        80    68  49          55  67
3   2        84    39        66    84  47          61  48

我想在df1中相同的等级评估类型之间平均分配df2中的等级权重>

上述情况的期望输出如下。

    A         B     C         D     E   F           G   H
0      Mid-Term  Quiz  Mid-Term  Quiz      Final Exam
1            15    10        15    10              35
2  78        36    96        80    68  49          55  67
3   2        84    39        66    84  47          61  48

有人可以帮助在熊猫中实现这一目标。

感谢和问候

[我有两个数据框,如下所示导入熊猫为pd导入numpy为np随机= np.random.RandomState(seed = 123)列= ['评估类型','重量%']评估= [中期','Quiz','...

python python-3.x pandas
3个回答
1
投票

尝试一下:


1
投票

一种简单的方法是使用评估和权重的字典将第0行的值映射到第1行(要用实际权重填充的行)。


0
投票

我尝试了这个并且奏效了。

© www.soinside.com 2019 - 2024. All rights reserved.