我的数据集的日期范围是2018年1月12日到8月3日,其中包含一些值:
my_df DataFrame的维度是:
my_df.shape
(9752, 2)
每行包含半小时的频率
第一行开始于2018-01-12
my_df.iloc[0]
Date: 2018-01-12 00:17:28
Value 1
Name: 0, dtype: object
最后一排结束于2018-08-03
my_df.tail(1)
Date: Value
9751 2018-08-03 23:44:59 1
我的目标是选择与每天相对应的数据行并将其导出为CSV文件.
为了获得1月12日的数据并保存到可读文件,我执行:
# Selecting data value of each day
my_df_Jan12 = my_df[(my_df['Fecha:']>='2018-01-12 00:00:00')
&
(my_df['Fecha:']<='2018-01-12 23:59:59')
]
my_df_Jan12.to_csv('Data_Jan_12.csv', sep=',', header=True, index=False)
从1月12日到8月03日有203天(28周)
我不想每天手动执行此查询,然后我尝试以下基本分析:
>我需要生成203个文件(每天1个文件)
> 1月12日(1月12日)的一天
> 1月是第一个月(01),8月是第8个月(08)
然后:
>我需要迭代203天的总体情况
>并且在每个日期行值检查中是必需的
月份和日期值日期以及检查更改的顺序
他们每个人
根据以上所述,我正在尝试这种方法:
# Selecting data value of each day (203 days)
for i in range(203):
for j in range(1,9): # month
for k in range(12,32): # days of the month
values = my_df[(my_df['Fecha:']>='2018-0{}-{} 00:00:00'.format(j,k))
&
(my_df['Fecha:']<='2018-0{}-{} 23:59:59'.format(j,k))]
values.to_csv('Values_day_{}.csv'.format(i), sep=',', header=True, index=False)
但是我的问题在于我在几个月内迭代范围(12,32),这个范围(12,32)仅适用于1月份的第一个月,我想是这样……
最后,我得到203个空的CSV文件,因为我做错了…
如何才能解决这种适合的小挑战?
任何方向都非常感谢
解决方法:
像这样的东西?我将您的原始列Date:重命名为Timestamp.我也假设您拥有的日期:系列是熊猫DateTime系列.
my_df.columns = ['Timestamp', 'Value']
my_df['Date'] = my_df['Timestamp'].apply(lambda x: x.date())
dates = my_df['Date'].unique()
for date in dates:
f_name = str(date) + '.csv'
my_df[my_df['Date'] == date].to_csv(f_name)
标签:python,pandas,extract 来源: https://codeday.me/bug/20190731/1586610.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。