2017-02-06 17 views
1

何か検索しましたが、データを日付別にグループ化して頻度を数えて何も検索しませんでした。私は集約でこれを行うことができますが、私はどのように結果、感謝の新しい列を作成するか分からない。ファイル内pandas groupby新しい列に集約

データ:

Domain Dates 
twitter.com 2016-08-08 
google.com 2016-08-09 
apple.com 2016-08-09 
linkedin.com 2016-08-09 
microsoft.com 2016-08-09 
slack.com 2016-08-12 
instagram.com 2016-08-12 
ibm.com 2016-08-12 

コード

import pandas as pd 
import matplotlib.pyplot as plt 
import datetime 
import numpy as np 

df = pd.read_csv('domains.tsv', sep='\t') 
df = df.groupby([pd.to_datetime(df.Dates).dt.date]).agg({'Dates':'size'}) 
print(df) 

利回り

  Dates 
Dates 
2016-08-08  1 
2016-08-09  4 
2016-08-12  3 

理想的には、私は '数' であるとカウント列を希望して、私はとして保存されます新しいCSV。

+0

正確に何をお探しですか?列の名前を変更する方法を尋ねていますか? –

+0

@ juanpa.arrivillaga「日付」という列が2つあり、その列が名前を持たないのでその応答を出力していると思っていました – sn4ke

答えて

1
import pandas as pd 


df = pd.read_csv('domains.tsv', sep='\t') 
counter = df.groupby('Dates').count().rename(columns={'Domain': 'count'}) 
counter.to_csv('count.csv') 

あなたの現在のディレクトリに、次の結果を含むcount.csvを取得します。

Dates,count 
2016-08-08,1 
2016-08-09,4 
2016-08-12,3 
0
df['count'] = df.groupby(['Dates']).transform('count') 
+0

最初はこれが私がOPだと思っていたものです。今私はよくわからない。 –

+0

@ juanpa.arrivillaga彼は、彼が実際に出力していたものはすでにカウントであったことに混乱していたと思います。 –

+0

@A.Kotは異なる結果を生み出していますが、私は出力の両方の「日付」という名前の2つの列に混乱していたと思います – sn4ke