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
我有一个 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