如何基于Pandas数据框中其他多个列的值添加两个新列?

katseye:

我正在尝试根据其他一些列的值将两列添加到现有数据框。我的数据框如下所示:

df = pd.DataFrame({'Type':['A', 'A', 'A', 'B','',''], 'Type1':['A', 'A', '', 'B','',''], 'Type2':['A','B','B','B','A',''], 'Score':[1, 2, 3, 1, 0 ,0], 'Score1':[2, 1, 0, 1, 0 ,0], 'Score2':[1, 3, 2, 1, 2 ,0]})

  Type  Type1   Type2   Score   Score1  Score2
0   A     A       A        1       2      1
1   A     A       B        2       1      3
2   A             B        3       0      2
3   B     B       B        1       1      1
4                 A        0       0      2
5                          0       0      0

我想添加两列“ Score_A”和“ Score_B”,以使“ Score_A”将是Type为“ A”(每行)的情况下得分的平均值。对于“ Score_B”也是如此。值得一提的是,无论类型为空,都不应使用分数来计算平均值。

在这种情况下,成功执行功能的结果将是:

Score_A  Score_B
  1.33      0 
  1.5       3
   3        2
   0        1
   2        0
   0        0

我已经在行级别运行嵌套循环来执行此操作,但是还有更好的方法吗?

安德烈·凯斯利(Andrej Kesely):
m1 = (df[['Type', 'Type1', 'Type2']] == 'A')
m2 = (df[['Type', 'Type1', 'Type2']] == 'B')
scores = df[['Score', 'Score1', 'Score2']]

df['Score_A'] = pd.DataFrame(np.where(m1, scores, np.nan)).mean(skipna=True, axis=1).fillna(0)
df['Score_B'] = pd.DataFrame(np.where(m2, scores, np.nan)).mean(skipna=True, axis=1).fillna(0)

print(df)

印刷品:

  Type Type1 Type2  Score  Score1  Score2   Score_A  Score_B
0    A     A     A      1       2       1  1.333333      0.0
1    A     A     B      2       1       3  1.500000      3.0
2    A           B      3       0       2  3.000000      2.0
3    B     B     B      1       1       1  0.000000      1.0
4                A      0       0       2  2.000000      0.0
5                       0       0       0  0.000000      0.0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Pandas数据框中的其他列中填充基于新列的值

如何根据其他两列中的值在熊猫数据框中添加新列

如何基于两个不同数据框中的匹配值创建新列?

如何从python数据框中基于其他两个列提取列的一部分

根据其他两个数据框列中的值条件创建新列

创建一个基于数据框中其他列的值创建新列的函数

熊猫从数据框中的其他两个列变量计算新列

Pyspark-使用数据框中其他两个列的RMSE创建新列

如何基于来自其他数据框的两个条件创建列?

如何基于应用于其他两个列的函数更改列中的值

如何基于另一列的两个连续值在pandas的新列中添加标签?

如何在两个不同列表中包含的基于数据框的值中创建新列?

如何基于时间序列Pandas数据帧的其他两个布尔列确定列中的状态?

通过比较不同数据框中的其他两个列来创建新的数据框列

如何在明列值上比较两个不同的数据框并将值放入其他数据框

Pandas:如何添加一个新列,结合其他列中的多个列表?

基于其他两个列值的逻辑的新列以查找异常值

SQL:基于重复观察的数据集中其他两个列的条件创建新列

如何基于Pandas数据框中的另一个列值添加列?

在 R 中同时为多个文件添加基于其他列中的随机值的新列

此Numpy / Pandas代码基于其他两个布尔列中的值构造新的布尔列有什么问题?

如何添加一个新列,其中将包含其他列的两个列表中的公共值列表

如何在具有两个条件的熊猫数据框中添加新列?

如何通过匹配R中的其他两个列将一列中的值提取到数据框中

在与python中的其他两个列绑定的两列中添加值(重复的值)

熊猫如何在数据框的两个行值之间添加其他值

根据其他列行中的过滤值,在pandas数据框中创建一个新列

基于其他列的Pandas数据透视表总和(好像有两个索引)

基于两个其他日期之间的日期合并两个数据框而没有公共列