特定列的平均值并将其存储在新列中

问题描述 投票:1回答:2

我在这里做错了什么?我有一个数据框,其中我要添加两个新列,第一个通过将每列中等于1的所有值相加来创建一个计数。代码的下一部分应在右侧给出不等于0的所有值的平均值。出于某种原因,它还将左侧的值也考虑在内。这是代码。感谢您的帮助。

我已经尝试了我的代码以及下面的两个解决方案,但仍然得到错误的平均值。这是带有随机数据帧的简化版本,以及代码的所有三个版本。我已经删除了左侧的值,但仍然存在平均值错误的问题。也许这会有所帮助。

版本1:

df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))

idx_last = len(df.columns)
df.insert(loc=0, column='new', value=df[df[0:(idx_last+1)]==1].sum(axis=1))

idx_last = len(df.columns)
df.insert(loc=1, column='avg', value=df[df[0:(idx_last+1)]!=0].mean(axis=1))

df

版本2:

df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))

df.insert(loc=0, column='new', value=(df.iloc[:, 0:]==1).sum(axis=1))
df.insert(loc=1, column='avg', value=(df.iloc[:, 1:]!=0).mean(axis=1))

df

版本3:

df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))

idx_last = len(df.columns)
loc_value=0
df.insert(loc=loc_value, column='new', value=df[df[loc_value:(idx_last+1)]==1].sum(axis=1))

idx_last = len(df.columns)
loc_value=1
df.insert(loc=loc_value, column='avg', value=df[df[loc_value: (idx_last+1)]!=0].sum(axis=1))

df
python pandas multiple-columns mean
2个回答
3
投票

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.