添加一个';1';如果一个值在Python中的两倍之间,则返回到单元格
我已经将一个Excel文件导入到一个数据框中,该数据框中有一个名为“Opened”的列,其中有打开某个文件的日期和时间 我希望有一个标记为“07:01-09:00”的新列,并且每一行在这段时间内都有一个打开的时间,我希望在该列的同一行上添加一个“1” 到目前为止,我有这个添加一个';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
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!