[英]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的 FB和NON-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.