2017-10-09 65 views
0

我在下表中有一个名为df的数据框,其中包含以下列:“date”和“Name”。我打算过滤器的基础上的“日期”栏,即分组基于每一天旁边的“名称”列“日期”栏,因此计数每一个名字的日常发生如何使用时间序列列过滤数据帧

Date       Name 
"08/07/2017 10:10:58 0"   ABC 
"08/07/2017 10:21:55 0"   DBF 
"08/07/2017 11:21:55 0"   ABC 
"08/08/2017 12:00:58 0"   ABC 
"08/08/2017 12:10:58 0"   TTT 
"08/09/2017 11:10:58 0"   TAC 
"08/10/2017 11:20:58 0"   ABC 

例如发生:所以通过日期列日常迭代得出:

08/07/2017, ABC 2 
      DBF 1 

08/08/2017, ABC 1 

      TTT 1... till the last day 

我不知道我环路可以使用分组来帮助和counting.I已经使用如下代码:

df['Date' ]=pd.to_datetime(df['Date'], format= '"%m/%d/%Y %H:%M:%S 0"') 
df.index=df['Date'] 
del df['Date'] 
df.index=df['Date'] 
print(df) 
df3=df.loc['2017-07-08 11:10:58':'2017-07-09 11:10:58'].value_counts 
print(df3) 

豪版本,我不断收到回溯

回答

0

我想你需要SeriesGroupBy.value_counts

df['Date' ]= pd.to_datetime(df['Date'], format= '"%m/%d/%Y %H:%M:%S 0"') 
df = df.set_index(['Date']) 
df3 = df.loc['2017-08-07 11:10:58':'2017-08-09 11:10:58'] 

df3 = (df3.groupby(df3.index.date)['Name'] 
     .value_counts() 
     .rename_axis(('date','name')) 
     .reset_index(name='count')) 
print (df3) 
     date name count 
0 2017-08-07 ABC  1 
1 2017-08-08 ABC  1 
2 2017-08-08 TTT  1 
3 2017-08-09 TAC  1 
+0

它的工作很大!欣赏! – Bode