📌  相关文章
📜  如何使用 Pandas 从 Excel 文件列中提取时间数据?

📅  最后修改于: 2022-05-13 01:55:51.462000             🧑  作者: Mango

如何使用 Pandas 从 Excel 文件列中提取时间数据?

先决条件: Python中的正则表达式

在这些文章中,我们将讨论如何使用 Pandas 从 Excel 文件列中提取时间数据。假设我们的 Excel 文件如下图所示,那么我们必须从 Excel 工作表列中提取时间并将其存储到新的 Dataframe 列中。

要查看 Excel 文件,请单击此处。

方法:

  • 导入所需的模块。
  • 从 Excel 文件导入数据。
  • 为存储提取时间制作一个额外的列。
  • 设置检索提取列的索引。
  • 定义时间格式的模式(HH:MM:SS)。
  • 搜索时间并分配给 Dataframe 中的相应列。

让我们看看分步实施:

步骤 1:导入所需模块并从 Excel 文件中读取数据。

Python3
# importing required module
import pandas as pd;
import re;
  
# Read excel file and store in to DataFrame
data = pd.read_excel("time_sample_data.xlsx");
  
print("Original DataFrame")
data


Python3
# Create column for Time
data['New time'] = None
data


Python3
# set index
index_set = data.columns.get_loc('Description')
index_time = data.columns.get_loc('New time')
  
print(index_set, index_time)


Python3
# define time pattern
time_pattern = r'([0-24]{2}\:[0-60]{2}\:[0-60]{2})'


Python3
# searching the entire DataFrame
# with Time pattern
for row in range(0, len(data)):
    
    time = re.search(time_pattern,
                     data.iat[row,index_set]).group()
      
    data.iat[row, index_time] = time
      
print("Final DataFrame")    
data


Python3
# importing required module
import pandas as pd;
import re;
  
data = pd.read_excel("time_sample_data.xlsx");
print("Original DataFrame")
print(data)
  
# Create column for Date
data['New time']= None
print(data)
  
# set index
index_set= data.columns.get_loc('Description')
index_time=data.columns.get_loc('New time')
print(index_set,index_time)
  
# define the time pattern in HH:MM:SS
time_pattern= r'([0-24]{2}\:[0-60]{2}\:[0-60]{2})'
  
#searching dataframe with time pattern
for row in range(0, len(data)):
    time= re.search(time_pattern,data.iat[row,index_set]).group()
    data.iat[row,index_time] = time
      
print("\n Final DataFrame")    
data


输出:

第 2 步:创建一个额外的列来存储时间数据。

Python3

# Create column for Time
data['New time'] = None
data

输出:

步骤 3:设置搜索索引

Python3

# set index
index_set = data.columns.get_loc('Description')
index_time = data.columns.get_loc('New time')
  
print(index_set, index_time)

输出:

1 2

第 4 步:定义时间的正则表达式(regex)。

时间 HH/MM/SS 格式的正则表达式:

[0-24]{2}\:[0-60]{2}\:[0-60]{2}.

Python3

# define time pattern
time_pattern = r'([0-24]{2}\:[0-60]{2}\:[0-60]{2})'

第 5 步:搜索时间并分配给 Dataframe 中的相应列。

为了在字符串中使用正则表达式搜索时间,我们使用re库的re.search()函数。

Python3

# searching the entire DataFrame
# with Time pattern
for row in range(0, len(data)):
    
    time = re.search(time_pattern,
                     data.iat[row,index_set]).group()
      
    data.iat[row, index_time] = time
      
print("Final DataFrame")    
data

输出:

完整代码:

Python3

# importing required module
import pandas as pd;
import re;
  
data = pd.read_excel("time_sample_data.xlsx");
print("Original DataFrame")
print(data)
  
# Create column for Date
data['New time']= None
print(data)
  
# set index
index_set= data.columns.get_loc('Description')
index_time=data.columns.get_loc('New time')
print(index_set,index_time)
  
# define the time pattern in HH:MM:SS
time_pattern= r'([0-24]{2}\:[0-60]{2}\:[0-60]{2})'
  
#searching dataframe with time pattern
for row in range(0, len(data)):
    time= re.search(time_pattern,data.iat[row,index_set]).group()
    data.iat[row,index_time] = time
      
print("\n Final DataFrame")    
data

输出:

注意:在运行此程序之前,请确保您已经在Python环境中安装了xlrd库。