添加新列作为后续列的总和

Adding new column as a sum of the subsquent columns

我有这个 df:

id   car  truck  bus  bike
0     1     1     0    0
1     0     0     1    0
2     1     1     1    1

我想向此 df 添加另一列 count,但在 id 之后和 car 之前对行的值求和,如下所示:

id  count car  truck  bus  bike
0     2     1     1     0    0
1     1     0     0     1    0
2     4     1     1     1    1

我知道如何使用此代码添加列:

df.loc[:,'count'] = df.sum(numeric_only=True, axis=1)

但是上面的代码在最后一个位置添加了新列。

我该如何解决这个问题?

有几种方法。我这里提供了两种方式。

#1。创建 count 列后更改列顺序:

df.loc[:,'count'] = df.sum(numeric_only=True, axis=1)
df.columns = ['id', 'count', 'car', 'truck', 'bus', 'bike']
print(df)
#   id  count  car  truck  bus  bike
#0   0      2    1      1    0     0
#1   1      2    0      0    1     0
#2   2      6    1      1    1     1

#2。使用 insert function:

将系列插入特定位置
df.insert(1, "count", df.sum(numeric_only=True, axis=1))
print(df)
#   id  count  car  truck  bus  bike
#0   0      2    1      1    0     0
#1   1      2    0      0    1     0
#2   2      6    1      1    1     1

尝试对您的代码稍作修改:

import pandas as pd
df = pd.DataFrame(data={'id':[0,1,2],'car':[1,0,1],'truck':[1,0,1],'bus':[0,1,1],'bike':[0,0,1]})
count = df.drop(columns=['id'],axis=1).sum(numeric_only=True, axis=1)
df.insert(1, "count", count)
print(df)