繁体   English   中英

如何基于一列中的条件获取列表的特定列值的总和

[英]How to get sum of specific column values of a list based on a condition in one column

我有下面的长度为8的列表,其中包含按日期排列的数据

['2019-07-04', 'default_default', 'FB', 'ios', '0', '0', '0', '0']
['2019-07-04', 'default_default', 'FB', 'default', '1', '1', '0', '1']
['2019-07-04', 'default_default', 'FB', 'android', '0', '0', '0', '0']
['2019-07-04', 'default_default', 'NON-FB', 'android', '2', '1', '1', '1']
['2019-07-04', 'default_default', 'NON-FB', 'default', '1', '2', '1', '1']
['2019-07-04', 'default_default', 'NON-FB', 'ios', '1', '1', '1', '2']

我想获取日期为2019-07-04的 FBNON-FB的第5、6列的计数

所以最终列表将是

date|FB|NON-FB|total

[2019-07-04,1,4,5]
[2019-07-05,1,2,4]
... 
.. so on

下面是我的代码

 dic={}
 data=[str(item) for item in datewise]
 data[0]="date"
 dic[data[0]]={"FB":0,"NON-FB":0}
 dic[data[0]]["FB"]=sum(row[5] for row in data if row=="FB")

现在我正在使用循环和字典,是否有任何简单的方法来获得所需的输出?

您可以使用循环,但是看起来像这样并且需要像描述的那样进行操作的数据对于熊猫来说是一个很好的用例:

import pandas as pd

df = (pd.DataFrame(datewise, 
                   columns=['col0','col1','col2','col3','col4','col5','col6','col7'])
 .assign(col5= lambda d: d.col5.astype(int))
 .pivot_table(index='col0', columns='col2', values='col5', aggfunc=sum)
 .assign(total= lambda d: d.sum(axis=1))
)

print(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM