📅  最后修改于: 2023-12-03 15:03:29.763000             🧑  作者: Mango
Pandas 是一个常用的 Python 数据分析工具,它为我们提供了非常方便的数据操作和转换功能。当我们需要将文本型的持续时间转换为带单位的数字时,Pandas 提供了一种简单的方法。
在开始之前,我们需要先引入 Pandas 库。我们可以使用 pip 命令进行安装:
!pip install pandas
在本例中,我们将使用一个包含持续时间数据的 CSV 文件。下面是一个示例数据集:
duration
1h 30m
2h 15m
1h 45m
我们将读取这个 CSV 文件并将其转换为 Pandas 数据帧(DataFrame):
import pandas as pd
df = pd.read_csv('duration.csv')
现在,我们可以使用 Pandas 的 to_timedelta()
方法将文本型持续时间转换为 Pandas 的时间增量(Timedelta)。这个方法可以将字符串类型的时间按照给定的格式转换为时间增量类型,同时也支持自定义格式。
在这个例子中,我们需要将 '1h 30m' 转换为 90 分钟。为实现这一点,我们可以使用 to_timedelta()
方法,并指定时间格式为 '%Hh %Mm':
df['duration'] = pd.to_timedelta(df['duration'], format='%Hh %Mm')
现在,数据帧中的 'duration' 列已经转换为时间增量类型。我们可以使用 dt.total_seconds()
方法将时间增量转换为秒数,并将其转换为分钟数。
df['duration'] = df['duration'].dt.total_seconds() / 60
现在,'duration' 列中包含的数据已经被转换为分钟数。我们可以使用 Pandas 的 round()
方法来对结果进行四舍五入:
df['duration'] = df['duration'].round()
现在,我们已经将文本型持续时间转换为了分钟。这个过程可以使用 Pandas 中的 to_timedelta()
方法和 dt.total_seconds()
方法实现。在转换完毕后,我们可以使用 round()
方法对结果进行四舍五入,以保留一定的精度。
示例代码:
import pandas as pd
df = pd.read_csv('duration.csv')
df['duration'] = pd.to_timedelta(df['duration'], format='%Hh %Mm')
df['duration'] = df['duration'].dt.total_seconds() / 60
df['duration'] = df['duration'].round()
print(df)