当前位置: 首页 > 知识库问答 >
问题:

根据熊猫中的多个条件分组[重复]

姚信鸥
2023-03-14

我想对两列使用不同的条件来聚合行。

当我做df时。groupby(“[a]”)。agg('count'),我得到输出1

当我做df.groupby('[a]'). agg('均值')时,我得到输出2

是否有一种方法可以进行聚合,将输出1显示到列[b],将输出2显示到列[c]

共有1个答案

巴帅
2023-03-14

下面的代码应该有效:

# Import libraries
import pandas as pd
import numpy as np

# Create sample dataframe
df = pd.DataFrame({'a': ['A1', 'A1', 'A2', 'A3', 'A4', 'A3'],
                   'value': [1,2,3,4,5,6]})
# Calculate count, mean 
temp1 = df.groupby(['a']).count().reset_index().rename(columns={'value':'count'})
temp2 = df.groupby(['a'])['value'].mean().reset_index().rename(columns={'value':'mean'})

# Add columns to existing dataframe
df.merge(temp1, on='a', how='inner').merge(temp2, on='a', how='inner')
# Add columns to a new dataframe
df2 = temp1.merge(temp2, on='a', how='inner')
df2
 类似资料:
  • 问题内容: 我有以下数据框 基本上我可以如下过滤行 我可以如下所示删除/删除一行 但是我想根据条件删除一定数量的行,我该怎么做? 问题答案: 最好的是但需要反转条件-使所有值相等且更高,如下所示: 与功能相同: 另一种可能的解决方案是通过以下方法反转掩码:

  • 问题内容: 我正在尝试使用Pandas在几个条件下进行布尔索引。我原来的DataFrame称为。如果执行以下操作,将得到预期的结果: 但是,如果我这样做(我认为应该是等效的),则不会返回任何行: 知道导致差异的原因是什么? 问题答案: 使用是因为运算符优先级: 或者,在单独的行上创建条件: 样品 :

  • 我有下面的数据框- 我需要一个全新的数据帧,,有3列:1.0、2.0(结合2.0和4.0)和3.0(结合3.0和5.0)。 结果将是- 您可以预期合并列中不会有重叠的值;如果一行中的一列具有有效值,那么其他列将具有NaN值。 我试过了- 而且它并没有按预期的那样工作。有没有简单有效的方法来做到这一点?

  • 我必须解决这个问题:目标:删除大多数行缺少输入的列:1。数据帧df:数据帧2。阈值:确定将删除哪些列。如果阈值为.9,则缺少90%值的列将被丢弃:1。带删除列的数据帧df(如果未删除任何列,则返回相同的数据帧) Excel文档截图 我编码了这个: 我必须有“自我、博士和阈值”,不能添加更多。代码必须通过下面的测试用例: 当我运行VT.drop_nan_col(df,0.9). head()时,我不

  • 问题内容: 我有一些数据,导入时会得到以下不需要的列,我正在寻找一种删除所有这些数据的简便方法 它们被0索引索引,所以我尝试了类似 但这不是很有效。我尝试编写一些for循环,但这使我感到震惊,因为熊猫的行为不佳。因此,我在这里问这个问题。 我已经看到了一些类似的示例(投递多列pandas),但这无法回答我的问题。 问题答案: 我不知道您所说的低效率是什么意思,但是如果您指的是打字,那么选择感兴趣的

  • 我有一个数据框架: 和一本参考词典: 我的目标是将所有出现的< code > replacement _ dict[' X1 ']替换为' X1 ',然后将这些行合并在一起。例如,“x1”、“x2”、“x3”或“x4”的任何实例都将被替换为“X1”等。 我可以通过选择包含任何这些字符串的行并将其替换为“X1”来实现这一点: 给予: 现在,如果我选择所有包含“X1”的行并将它们合并,我将得到: 因此