当前位置: 首页 > 面试题库 >

将groupby操作的结果插入行到原始数据框中

宰父跃
2023-03-14
问题内容

例如,我有一个熊猫数据框,如下所示:

col_1   col_2   col_3  col_4
a       X        5      1
a       Y        3      2
a       Z        6      4
b       X        7      8
b       Y        4      3
b       Z        6      5

我想为col_1中的每个值添加col_3和col_4中的值(以及更多列),这些值与col_2中的X和Z对应,并使用这些值创建新行。因此输出如下:

col_1   col_2   col_3  col_4 
a       X        5      1
a       Y        3      2
a       Z        6      4
a       NEW      11     5
b       X        7      8
b       Y        4      3
b       Z        6      5
b       NEW      13     13

另外,col_1中可能会有更多需要相同处理的值,因此我无法明确引用“ a”和“
b”。我尝试使用groupby(’col_1’)和apply()的组合,但无法正常工作。我与下面的内容足够接近,但是我无法在col_2中将“
NEW”放置在col_1中并保留原始值(a或b等)。

df.append(df[(df['col_2'] == 'X') | (df['col_2'] == 'Z')].groupby('col_1').mean())

谢谢。


问题答案:

如果可以保证X并且Z仅在组中出现一次,则可以使用groupbyandpd.concat操作:

new = df[df.col_2.isin(['X', 'Z'])]\
      .groupby(['col_1'], as_index=False).sum()\
      .assign(col_2='NEW')

df = pd.concat([df, new]).sort_values('col_1')

df
  col_1 col_2  col_3  col_4
0     a     X      5      1
1     a     Y      3      2
2     a     Z      6      4
0     a   NEW     11      5
3     b     X      7      8
4     b     Y      4      3
5     b     Z      6      5
1     b   NEW     13     13


 类似资料:
  • Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。

  • Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。

  • Navicat 通常标识用户在表输入的字符串为一般字符串,任何特殊字符或函数将被处理为纯文本(即是它的功能会被忽略)。 在“原始数据模式”编辑数据是一个方便和直接的方法来应用服务器的内置函数。若要使用原始数据模式功能,只需简单地选择“查看”->“显示”->“原始数据模式”。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。

  • 问题内容: 我在IPython中具有以下数据框,其中每一行都是一只股票: 我想应用一个groupby操作,该操作计算“ yearmonth”列中每个日期的所有内容的上限加权平均回报。 这按预期工作: 但是,然后我想将这些值“广播”回原始数据帧中的索引,并将它们保存为日期匹配的常量列。 我意识到这种天真的任务不起作用。但是,将groupby操作的结果分配给父数据帧上新列的“正确” Pandas习惯用

  • 我有一个数据帧: 我需要添加第一行[2,3,4]来获得: 我尝试了和函数,但找不到正确的方法。 如何添加/插入系列到数据框?

  • 我正在为我的网站做一个注册页面。我在PHPMyAdmin中维护一个包含7个字段的数据库(id、用户名、密码、电子邮件、活动、代码和日期)。我正在使用代码和活动字段来实现电子邮件激活。注册表单使用post方法获取4个参数(名称、电子邮件、密码和重新键入密码),并将提交按钮的信息传递给PHP代码,以检查用户是否是新的,电子邮件ID是否应该是新的,并在单击提交按钮后检查空字段。PHP代码如下所示: 当我