python - Pandas 按索引对所有其他列求和,其中名称和索引大小发生变化

标签 python pandas python-2.7

这是我当前的数据框名称

Date    David_Added David_Removed   Malik_Added Malik_Removed   Meghan_Added    Meghan_Removed  Sucely_Added    Sucely_Removed
02/19/2019  3   1   39  41  1   6   14  24
02/18/2019  0   0   8   6   0   3   0   0
02/16/2019  0   0   0   0   0   0   0   0
02/15/2019  0   0   0   0   0   0   0   0
02/14/2019  0   0   0   0   0   0   0   0
02/13/2019  0   0   0   0   0   0   0   0
02/12/2019  0   0   0   0   0   0   0   0
02/11/2019  0   0   0   0   0   0   0   0
02/08/2019  0   0   0   0   0   0   0   0
02/07/2019  0   0   0   0   0   0   0   0

我需要按日期对每个人的数据求和,显然跳过了日期列。我希望总计是各列旁边的列的总和。 “User_Add、User_Removed、User_Total”如下所示。我面临的问题是前缀名称并不总是相同,并且用户总数会发生变化。 我的思考过程是计算总列数。然后循环遍历它们进行数学计算,并将结果转储到每个用户的新列中。然后按字母顺序对列进行排序,以便将它们分组在一起。

类似的东西

loops = out.shape[1]
while loop < loops:
    out['User_Total'] = out['User_Added']+out['User_Removed']
    loop += 1
out.sort_index(axis=1, inplace=True)

但是我不确定如何通过索引调用整个列,或者这是否是处理它的好方法。

这是我想要的输出。

Date    David_Added David_Removed   David_Total Malik_Added Malik_Removed   Malik_Total Meghan_Added    Meghan_Removed  Meghan_Total    Sucely_Added    Sucely_Removed  Sucely_Total
2/19/2019   3   1   4   39  41  80  1   6   7   14  24  38
2/18/2019   0   0   0   8   6   14  0   3   3   0   0   0
2/16/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/15/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/14/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/13/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/12/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/11/2019   0   0   0   0   0   0   0   0   0   0   0   0
2/8/2019    0   0   0   0   0   0   0   0   0   0   0   0
2/7/2019    0   0   0   0   0   0   0   0   0   0   0   0

非常感谢任何帮助!

最佳答案

groupby与列split结合使用

s=df.groupby(df.columns.str.split('_').str[0],axis=1).sum().drop('Date',1).add_suffix('_Total')
yourdf=pd.concat([df,s],1).sort_index(level=0,axis=1)
yourdf
Out[455]: 
         Date  David_Added      ...       Sucely_Removed  Sucely_Total
0  02/19/2019            3      ...                   24            38
1  02/18/2019            0      ...                    0             0
2  02/16/2019            0      ...                    0             0
3  02/15/2019            0      ...                    0             0
4  02/14/2019            0      ...                    0             0
5  02/13/2019            0      ...                    0             0
6  02/12/2019            0      ...                    0             0
7  02/11/2019            0      ...                    0             0
8  02/08/2019            0      ...                    0             0
9  02/07/2019            0      ...                    0             0
[10 rows x 13 columns]

关于python - Pandas 按索引对所有其他列求和,其中名称和索引大小发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54791359/

相关文章:

python - Pandas 'bool object is not callable'

python - 如何在不影响数据的情况下更改pandas中的索引值

python - 用于存储键值对并快速检索最低值的键的数据结构

python - 在 Python 中,根据该数组特定列中的值将数组行分成组

python - 在嵌套字典中添加所有键值

python - Pandas:将函数应用于每个组并将结果存储在新列中

python - 启动一个完全独立的进程

python-2.7 - lxml - 无法替换 child 的 child

python - 在 Django 中查询 ManyToMany 给我重复的结果

Python:使用负函数比较元胞数组