我已将数据文件加载到Python pandas数据帧中.我有一个格式的日期时间列2015-07-18 13:53:33.280.
我需要做的是创建一个新的列,将其四舍五入到最接近的四分之一小时.因此,上述日期将四舍五入为2015-07-18 13:45:00.000.
我怎么在熊猫里这样做?我尝试使用此处的解决方案,但收到'Series' object has no attribute 'year'错误.
从创建似乎与此问题重复的内容道歉.我的数据框形状或多或少类似于下面的数据框:
df_lenght = 240
df = pd.DataFrame(np.random.randn(df_lenght,2), columns=['a','b'] )
df['datetime'] = pd.date_range('23/06/2017', periods=df_lenght, freq='H')
unique_jobs = ['job1','job2','job3',]
job_id = [unique_jobs for i in range (1, int((df_lenght/len(unique_jobs))+1) ,1) ]
df['job_id'] = sorted( [val for sublist in job_id for val in sublist] )
df.set_index(['job_id','datetime'], append=True, inplace=True)
Run Code Online (Sandbox Code Playgroud)
print(df[:5]) 收益:
a b
job_id datetime
0 job1 2017-06-23 00:00:00 -0.067011 -0.516382
1 job1 2017-06-23 01:00:00 -0.174199 0.068693
2 job1 2017-06-23 02:00:00 -1.227568 -0.103878
3 job1 2017-06-23 03:00:00 -0.847565 -0.345161
4 job1 2017-06-23 04:00:00 …Run Code Online (Sandbox Code Playgroud) 我有一个从.csv文档创建的数据框。由于其中一列有日期,我使用了read_csv带有parse_dates以下内容的熊猫:
df = pd.read_csv('CSVdata.csv', encoding = "ISO-8859-1", parse_dates=['Dates_column'])
Run Code Online (Sandbox Code Playgroud)
日期范围从 2012 年到 2016 年。我想创建一个子数据框,其中只包含 2014 年的行。
我设法做到这一点的唯一方法是使用两个后续的布尔过滤器:
df_a = df[df.Dates_column>pd.Timestamp('2014')] # To create a dataframe from 01/Jan/2014 onwards.
df = df_a[df_a.Dates_column<pd.Timestamp('2015')] # To remove all the values after 01/jan/2015
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以更有效地一步完成?
非常感谢!