【发布时间】:2020-02-22 03:26:57
【问题描述】:
我有一个包含几个 csv 文件的数据库。每个 csv 文件都包含最近 7 天,只有最早的日期是最终数据。
例如“variables_2019-08-12.csv”文件包含 08-06 到 08-12 的数据(只有 08-06 的数据是最终数据),“variables_2019-08-13.csv”文件包含 08 的数据-07 至 08-13(仅 08-07 数据为最终数据)。我只想保留 variables_2019-08-12.csv 文件中日期 08-06 的记录和 variables_2019-08-13.csv 文件中日期 08-07 的记录等。服务器在 7 天内生成每个数据 7 次,只有在 7 天后数据才被视为最终数据。导入后的数据如下所示:
import pandas as pd
source = ["data/variables_2019-08-12.csv",
"data/variables_2019-08-12.csv",
"data/variables_2019-08-12.csv", "data/variables_2019-08-12.csv",
"data/variables_2019-08-12.csv", "data/variables_2019-08-12.csv",
"data/variables_2019-08-12.csv", "data/variables_2019-08-13.csv",
"data/variables_2019-08-13.csv", "data/variables_2019-08-13.csv",
"data/variables_2019-08-13.csv", "data/variables_2019-08-13.csv",
"data/variables_2019-08-13.csv", "data/variables_2019-08-13.csv"]
date = ["2019-08-06", "2019-08-07", "2019-08-08", "2019-08-09",
"2019-08-10", "2019-08-11", "2019-08-12", "2019-08-07","2019-08-08",
"2019-08-09", "2019-08-10", "2019-08-11", "2019-08-12","2019-08-13"]
id = [18404487, 18404487, 18502437, 18502437, 18502437, 18502437,
18502437, 18502437, 18502437, 18502437, 18502437, 18502437,18502437, 18502437]
usage = [11, 146, 41, 1, 2, 8, 2, 152, 42, 1, 5, 100, 2, 15]
dict = {'source': source, 'date': date, 'id': id, 'usage': usage}
df = pd.DataFrame(dict)
我正在一次读取所有 CSV 文件,然后按源列分组并过滤并仅保留每个源中最旧的日期。我在这里做错了什么?
# group by source
# filter only oldest date
# ungroup dataframe
df['date'] = pd.to_datetime(df['date'])
df.groupby('source').filter(lambda x: (x['date'].min())).reset_index()
#error
filter function returned a Timestamp, but expected a scalar bool
【问题讨论】:
标签: python pandas numpy pandas-groupby