2017-02-22 4 views
-1

今、私はcsvのこの(サブアレイ)内の任意の列の指定された日付範囲内に入るエントリの数を合計しようとしています
(ラベル:id、ラベル:請求書番号、ラベルapptの日付、ラベルの完成日、ラベル:請求書の金額の最後の予定日)を入力してください。 )文字列の全部または一部を含むcsv内のすべてのエントリを合計する

(label 1, Label 2, Label 3,   label 4,   label 5, label 6) 
18565272, 3548587, 2015-12-30 16:30:00, 2017-01-18 4:01:00, 0, 11/30/2016 
22909611, 2000404134, 2016-05-18 14:55:00, 2017-01-26 16:59:00, 0, NULL 
21541501, 1166588, 2016-07-07 17:00:00, 2017-02-14 4:01:00, 84, 4/11/2016 
1000141115,1429670, 2016-10-29 0:06:00, 2017-01-18 21:43:00, 49, 3/2/2016 

私は列を定義して、日付範囲、たとえば「1月1-30 2016」の中にその嘘を出現する回数を計算することができるようにしたいと思います。私は実際にこれに関連するメソッドを経験していません(私のPythonの経験の大部分は数値計算側にあります)。私は現在、いくつかのアイデアを持っています(行に沿って特定のエントリを含まない行を削除するためにパンダを使用し、行数を合計するなど)があります。

+0

データが意味をなさないと思われたり、列を説明することができます。 3つの日付、2つの時刻、3つの他の列が表示されます。ある範囲内にあることをチェックする必要のある日付列の1つだけの場合は、スライシングは非常に簡単ですが、小さくて明確なサンプルデータが役立ちます。 – RexFuzzle

+0

右私が追加したばかりの各列のラベルがありますので、残念です。最初の2つの列はID番号ですが、最初の日付はApptment日付、2番目の日付は完了日付、次の番号は請求書番号、最後の日付は最後に表示された時刻です。 基本的には、どの列を考慮したいのかによって、範囲を拒否し、その列にいくつの日付が入っているのかがわかります! – user7351362

答えて

0

パンダを使用してみてください。 START_DATEのため

import pandas as pd 

df = pd.read_csv(your_file) # read the data 

def date_range_counter(column, start_date, end_date) 
    dates_range = pd.date_range(start_date, end_date) # creates list of dates between start_date and end_date 
    arr = df[df[column].isin(dates_range)] # will only keep rows of the dataframe that have dates in the range specified 
    return len(arr) 

、あなたは「YYYY/MM/DD」形式で文字列を使用することができ、列の入力を使用して、例えば「ラベル1」から日付をカウントする列ラベルの文字列でなければなりませんEND_DATE。

+0

ありがとう!今しよう! – user7351362

+0

どうすればいいのか教えてください! – Nemo

関連する問題