如何根据熊猫中的条件为数据框的子集的列分配值?

马苏德

我有一个数据框:

df = pd.DataFrame([[0,4,0,0],
[1,5,1,0],
[2,6,0,0],
[3,7,1,0]], columns=['index', 'A', 'class', 'label'])

df:

指数 一种 标签
0 4 0 0
1个 5 1个 0
2 6 0 0
3 7 1个 0

我想将标签更改为1,如果类0的行的A列的平均值大于A列中所有数据的平均值?

如何在几行代码中做到这一点?

我试过了但是没用:

if df[df['class'] == 0]['A'].mean() > df['A'].mean():
   df[df['class']]['lable'] = 1
塞扬迪普·杜塔(Sayandip Dutta)

使用以下,获得各组的,检查是否大于,并且系列与分配到pandas.DataFrame.groupby 'class'groupby.mean'A'df['A'].mean()pandas.Series.mapbooleanastype(int)df['class']df['label']

>>> df['label'] = df['class'].map(
        df.groupby('class')['A'].mean() > df['A'].mean()
    ).astype(int)

>>> df

   index  A  class  label
0      0  4      0      0
1      1  5      1      1
2      2  6      0      0
3      3  7      1      1

由于您只检查class== 0,你需要添加另一个boolean maskdf['class']

>>> df['label'] = (df['class'].map(
        df.groupby('class')['A'].mean() > df['A'].mean()
        ) & (~df['class'].astype(bool))
    ).astype(int)
   index  A  class  label
0      0  4      0      0
1      1  5      1      0   # because (5+7)/2 < (4+5+6+7)/4
2      2  6      0      0
3      3  7      1      0   # because (5+7)/2 < (4+5+6+7)/4

因此,即使您的代码有效,您也不会知道,因为条件无法满足。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据条件为熊猫数据框中的行组分配唯一值?

熊猫:根据条件为多索引数据框的子集设置值的正确方法

根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

如何根据熊猫数据框中的条件移动列中的值

大熊猫-如何根据日期组织数据框并为列分配新值

如何根据条件替换熊猫数据框中的值?

根据特定月份的值过滤熊猫数据框,并以另一列为条件

根据熊猫数据框中的条件为列分配值

如何断言根据条件过滤的熊猫数据框为真

根据条件在熊猫数据框中的多行中设置值

如何根据熊猫数据框数据透视表中的条件获取列中的值?

如何根据“标识符列”和熊猫数据框中的附加条件替换值?

如何根据条件在熊猫数据框的多列上分配值

根据两个熊猫数据框之间的条件将值分配给新列

熊猫数据框根据条件更改列中的值

如何根据多种条件更改熊猫数据框列系列中的特定单元格值?

根据不同的列值为数据框中的列分配值

在熊猫数据框中根据条件为组创建列

根据熊猫数据框中其他列的条件和值创建新列

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

根据数据框中另一列的值为列表中的数据框列分配值

Pandas - 尝试根据多个条件为数据框分配值

如何根据不同的条件为熊猫数据框中的特定列赋值?

在熊猫数据框中,如何根据列值过滤行,进行计算并将结果分配给新列?

如何根据数据框中的不同行值为新列分配标签?

熊猫数据框 - 根据条件设置列值

如何根据列值获取数据框的子集?

如何根据条件在熊猫数据框中创建新列?

根据条件替换熊猫数据框列中的值