Python/Pandas 将字符串添加到列中包含特定次数的字符的行

Python/Pandas Add string to rows in a column that contain a character a specific number of times

我有一个 Pandas DataFrame(data),其中 ['Duration'] 列为 'object' 类型,其持续时间格式为:'H:%M:%S' 例如 '1 :47:54' 有 7 个字符,还有只有分钟 '%M:%S' 的持续时间,例如 '45:20' 或 '03:20' 有 5 个字符。

我想将此列转换为 Pandas 时间增量

但是,我似乎需要让列中的所有行都具有相同的字符长度,因为当我尝试这样做时:

data['Duration'] = pd.to_timedelta(data['Duration'])

我得到:“ValueError:预期 hh:mm:ss 格式”

你知道如何解决这个问题吗?

是否可以只搜索一次列中包含“:”的行?

然后向这些行添加一个带有“0:”的字符串 ?

也许与: data['Duration'] = '0:' + data['Duration'].astype(str)

您可以使用 df.where:

df['Timedelta'] = pd.to_timedelta(df['Duration'].where(df['Duration'].str.len() >= 7,
                                                       other='0:' + df['Duration']))
print(df)

# Output
  Duration       Timedelta
0  1:47:54 0 days 01:47:54
1    45:20 0 days 00:45:20
2    03:20 0 days 00:03:20