Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加一个';1';如果一个值在Python中的两倍之间,则返回到单元格_Python_Excel_Pandas - Fatal编程技术网

添加一个';1';如果一个值在Python中的两倍之间,则返回到单元格

添加一个';1';如果一个值在Python中的两倍之间,则返回到单元格,python,excel,pandas,Python,Excel,Pandas,我已经将一个Excel文件导入到一个数据框中,该数据框中有一个名为“Opened”的列,其中有打开某个文件的日期和时间 我希望有一个标记为“07:01-09:00”的新列,并且每一行在这段时间内都有一个打开的时间,我希望在该列的同一行上添加一个“1” 到目前为止,我有这个 Opened 2020-04-14 14:45:58 2020-04-07 17:53:49 2020-04-07 07:10:14 2020-04-06 23:1

我已经将一个Excel文件导入到一个数据框中,该数据框中有一个名为“Opened”的列,其中有打开某个文件的日期和时间

我希望有一个标记为“07:01-09:00”的新列,并且每一行在这段时间内都有一个打开的时间,我希望在该列的同一行上添加一个“1”

到目前为止,我有这个

Opened                            
2020-04-14 14:45:58 
2020-04-07 17:53:49 
2020-04-07 07:10:14 
2020-04-06 23:11:13 

我想要的是

Opened                07:01 - 09:00              
2020-04-14 14:45:58 
2020-04-07 17:53:49 
2020-04-07 07:10:14         1
2020-04-06 23:11:13 

因此,不包含列中指定的时间间隔的单元格不会在单元格中获得“1”

能做到的人会的

一些代码

import pandas as pd
data = pd.read_excel('opened.xlsx')
fmt = '%m/%d/%Y %H:%M:%S'

data['Opened'] = pd.to_datetime(data['Opened'],
                                     format=fmt,
                                     errors='coerce')




将日期设置为索引,并使用pandas获取ur值:

df = df.set_index('Opened')

df.loc[df.between_time('07:01','09:00').index, '07:01 - 09:00'] = 1


                      07:01 - 09:00
Opened  
2020-04-14 14:45:58          NaN
2020-04-07 17:53:49          NaN
2020-04-07 07:10:14          1
2020-04-06 23:11:13          NaN

将日期设置为索引,并使用pandas获取ur值:

df = df.set_index('Opened')

df.loc[df.between_time('07:01','09:00').index, '07:01 - 09:00'] = 1


                      07:01 - 09:00
Opened  
2020-04-14 14:45:58          NaN
2020-04-07 17:53:49          NaN
2020-04-07 07:10:14          1
2020-04-06 23:11:13          NaN
使用次数,然后通过测试位置进行测试:

idx = df.set_index('Opened').index.indexer_between_time('07:01','09:00')

#if default index RangeIndex
#df['07:01 - 09:00'] = df.index.isin(idx).astype(int)
#any index
df['07:01 - 09:00'] = np.in1d(np.arange(len(df)), idx).astype(int)
print (df)
               Opened  07:01 - 09:00
0 2020-04-14 14:45:58              0
1 2020-04-07 17:53:49              0
2 2020-04-07 07:10:14              1
3 2020-04-06 23:11:13              0
或者,如果需要空值(输出中存在混合数据,因此在下一次处理中可能出现问题),则可以使用:

使用次数,然后通过测试位置进行测试:

idx = df.set_index('Opened').index.indexer_between_time('07:01','09:00')

#if default index RangeIndex
#df['07:01 - 09:00'] = df.index.isin(idx).astype(int)
#any index
df['07:01 - 09:00'] = np.in1d(np.arange(len(df)), idx).astype(int)
print (df)
               Opened  07:01 - 09:00
0 2020-04-14 14:45:58              0
1 2020-04-07 17:53:49              0
2 2020-04-07 07:10:14              1
3 2020-04-06 23:11:13              0
或者,如果需要空值(输出中存在混合数据,因此在下一次处理中可能出现问题),则可以使用:


那很有效!我没想过要用Numpy!那很有效!我没想过要用Numpy!