所以我有一个带有日期列和正面情绪列的CSV文件。如果正面情绪列为正,则该列将显示1.如果不是,则显示0。
我需要能够输入日期,对于csv中的日期晚于输入日期的行,我需要计算积极情绪栏中的总正分数。
到目前为止,我已经设法提出了这个
import datetime
import pandas as pd
data = pd.read_csv('rt_Article2.csv')
csv_date = pd.to_datetime(data["Date"])
positive_news= (data['Positive'])
user_date= datetime.datetime(2018, 4, 1, 00, 00)
user_score = 4
neg= 0
pos= 0
count=0
for i in csv_date:
if i > user_date:
count +=1
for N in positive_news:
if N == 1:
pos +=1
break
print (pos)
然而,当我打印(pos)时,它只计算正列中的所有内容,无论它是否符合日期标准。
我刚刚开始编码一个月前,如果代码混乱,我很抱歉。 任何帮助将不胜感激。谢谢!
Date Positive
April 2, 2018 0
April 1, 2018 1
April 1, 2018 0
March 31, 2018 0
更新:我还必须返回第一个正分和最后一个正分的日期,一旦达到user_score,在这种情况下为4.换句话说,我需要得到分数为1的日期,以及分数达到4的日期。
答案 0 :(得分:1)
我认为你不需要循环,大熊猫,循环几乎总是不必要的:
#include<stdio.h>
int main()
{
int i,j,arr[100000],n,d;
scanf("%d\t%d",&n,&d);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
for(i=0;i<d;i++)
{
int first=arr[0];
for(j=0;j<n;j++)
{
arr[j]=arr[j+1];
}
arr[n-1]=first;
}
for(i=0;i<n;i++)
{
printf("%d\t",arr[i]);
}
return 0;
}
输出:
import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame({'date':np.random.choice(pd.date_range('2017-09-01','2017-09-30'),500),'positive':np.random.choice([0,1],500)})
df.loc[df['date'] == '2017-09-15','positive'].sum()