汇总csv中包含全部或部分字符串的所有条目

时间:2017-02-22 19:45:51

标签: python-3.x csv pandas numpy

现在我试图将csv的这个(子阵列)中任意列的给定日期范围内的条目数相加(总共有3个日期列,我希望能够查看任何列和相应的条目):
(标签:id,标签:发票编号,标签贴图日期,标签完成日期,标签:发票金额最后预约日期)

(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

我希望能够定义一个列,然后计算一个日期出现在一个范围内的次数 - 例如" 2016年1月1日至30日"。我对与此相关的方法并不熟悉(我的大多数python经验都在数值计算方面)。我目前有一些想法(使用pandas删除行中不包含给定条目的行,然后总结行数)但我正在寻找可能工作得更好的一些。 / p>

1 个答案:

答案 0 :(得分:0)

尝试使用pandas。

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)

对于start_date和end_date,您可以使用格式为“YYYY / MM / DD”的字符串,列输入应该是您要计算日期的列标签的字符串,例如“标签1”。