将新列添加到python pandas中的分组对象

sequence_hard

我正在尝试执行以下操作:我有一个由四列组成的数据框。我按column0对框架进行分组,然后在分组的对象上调用一个函数,以在每个组中添加另一列。但是,当我尝试在分组对象上调用函数时,出现错误。我的代码如下所示:

def function(x):
    return x['column2']-x['column1']


Groupeddf = df.groupby('column0')
for key, group in Groupeddf: 
    Nullgroup=group[group.column3 == 0]
    Nullgroup['new_column']=Nullgroup.apply(function, axis=1)

当我尝试代码时,我得到 ValueError: Cannot set a frame with no defined index and a value that cannot be converted to a Series

我的数据框具有以下类型:

    column0  column1  column2  column3
0     a         2        5       1
1     a         3        7       0
2     b         1        3       4
3     c         3        5       0

有谁知道如何解决这个问题?

耶斯列尔

您可以尝试groupby使用自定义功能floc

def f(x):
    x.loc[x.column3 == 0, 'new_column']  =  x['column2'] - x['column1']
    return x

print df.groupby('column0').apply(f)  
  column0  column1  column2  column3  new_column
0       a        2        5        1         NaN
1       a        3        7        0           4
2       b        1        3        4         NaN
3       c        3        5        0           2  

但也许groupby可以省略:

df.loc[df.column3 == 0, 'new_column']  =  df['column2'] - df['column1']
print df
  column0  column1  column2  column3  new_column
0       a        2        5        1         NaN
1       a        3        7        0           4
2       b        1        3        4         NaN
3       c        3        5        0           2

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将uuid添加到pandas DataFrame中的新列

将新列数组添加到Pandas数据框

将列一一添加到新的DataFrame中

将变量内容添加到文件中的新列

如何使用dplyr将列的顺序计数添加到分组列的新列中

将新对象添加到 JSON 列表 Python

遍历if语句的行并添加到新列[Pandas / Python]

分组数据处理后将新列添加到数据框中时出错

反复添加计算的列,然后仅将新数据添加到Pandas数据框(python 3.7.1)

根据现有列中的值将值添加到Pandas中的新列中

Pandas:将列列表添加到数据框中的新列

将新列添加到 R 中的树数据对象列表列表中

Python Pandas中按对象分组的时差

Python pandas dataframe将元素添加到先前的行值并创建一个新列

将新的dataFrame列添加到pandas中的相同数据框

Pandas:将汇总信息添加到 groupby 框架中的新列

将新对象添加到Chrome本地存储中

将 {} 中的新对象添加到数组

如何将新值添加到对象中

将列添加到csv文件中,并基于现有列powershell填充新列

循环3次并每次将新值添加到spark DF中的新列

需要使用xsl将新添加的条目添加到给定xml的新列中

将新列添加到数据框,这是分组计数的结果

使用 Pandas 将列添加到 CSV(从其他列计算的新列的值)

如何基于现有列将新列添加到pandas系列

根据其他列中的值将新列添加到矩阵中

基于匹配,时间,响应和分组信息,将新列添加到R中的纵向数据中。

根据多列的值将新列添加到数据框中

根据列中的值将新列添加到临时表