我有一个系列如下:
0 1.5
1 39 mins
2 2.5
3 3
我想将39分钟转换为0.39。以下是我的代码:
df['content_duration'].apply(lambda x: x.str.replace('mins', '').astype(int) * 1/100 if x in 'mins' else x)
我没有收到错误,但仍然无法转换。我怎样才能做到这一点? 我的预期输出将是:
0 1.5
1 0.39
2 2.5
3 3
答案 0 :(得分:2)
这对我有用:
# dataset for read_clipboard()
'''
content_duration
1.5
39 mins
2.5
3
'''
df = pd.read_clipboard('\t')
df['content_duration'] = df['content_duration'].apply(lambda x: int(x.replace('mins', '').strip()) * 1/100 if 'mins' in x else x)
print(df)
输出:
content_duration
0 1.5
1 0.39
2 2.5
3 3
答案 1 :(得分:1)
您可以使用.loc
和str.extract
df.loc[df[0].str.contains('mins'),0] = df[0].str.extract('(\d+)').astype(int)[0] / 100
print(df)
0
0 1.5
1 0.39
2 2.5
3 3
答案 2 :(得分:1)