我有61个csv文件,与一年中的61天相关,但在每个文件中不仅有该日期的数据,还有与61天中的其他数据相对应的数据。数据的形式是
4d7cc82e33d042fdf13b9149bcdacee1;2015-03-01 05:21.:52;45.631616;9.2073;20;0
4d7cc82e33d042fdf13b9149bcdacee1;2015-03-01 05:22:51;45.6316;9.2073;20;0
4d7cc82e33d042fdf13b9149bcdacee1;2015-03-01 05:23:51;45.6316;9.207333;20;0
4d7cc82e33d042fdf13b9149bcdacee1;2015-03-01 05:24:51;45.6316;9.207333;20;0
6b1d2f4037aa849e4f8274b61e6cb002;2015-02-28 23:37:47;45.30044;8.85833;20;49
6b1d2f4037aa849e4f8274b61e6cb002;2015-02-28 23:37:49;45.30035;8.85797;20;53
6b1d2f4037aa849e4f8274b61e6cb002;2015-02-28 23:37:51;45.30026;8.85758;20;57
6b1d2f4037aa849e4f8274b61e6cb002;2015-02-28 23:37:53;45.30017;8.85717;20;60
6b1d2f4037aa849e4f8274b61e6cb002;2015-02-28 23:37:55;45.30006;8.85674;20;64
例如在第二列中,当您看到报告的日期和时间时,一组行与2015-03-01相关且一组行与2015-02-28相关 我想读取这61个文件并提取与每天相关的行,并将它们写入其他文件中,并获取每天只有一天信息的文件。 我是否必须将一个数据帧中的所有文件连接到此作业。到现在为止我试过了:
data_path = " ... "
fp = glob.glob(os.path.join(data_path, "output_*")
for j in fp:
df = pd.read_csv(j, sep=";",header=None,names =
['trip','dateandtime','lat','lon','vehicle','velocity'])
df = pd.to_csv(Path2, sep=" ",header = None, names =
['trip',df.loc[df['dateandtime'] == '2015-03-01
*','lat','lon','vehicle','velocity'])
但这似乎是无稽之谈。提前谢谢!
答案 0 :(得分:0)
这样的事情怎么样:
from datetime import datetime
import pandas as pd
import glob
data_path = '/my/data/'
columns = ['trip', 'dateandtime', 'lat', 'lon', 'vehicle', 'velocity']
df_all = pd.DataFrame(columns=columns)
for csv_filename in glob.glob(os.path.join(data_path, "output_*.csv")):
df = pd.read_csv(csv_filename, sep=';', header=None, names=columns, parse_dates=['dateandtime'])
df_all = df_all.append(df)
df_all.sort_values('dateandtime', inplace=True)
for key, group in df_all.groupby(pd.Grouper(key='dateandtime', freq='1D')):
if not group.empty:
csv_name = key.strftime('%Y-%m-%d.csv')
group.to_csv(csv_name, sep=';', index=False)
它将所有可能的CSV文件读入单个数据帧,按日期对它们进行排序,然后将它们分组写出。 CSV文件的名称是日期。