![](/img/trans.png)
[英]How can I calculate the duration of a column, grouping by another column (Python or R)
[英]How can I split values as int and string in column and calculate duration
在我的 dataframe 中有几列。 其中之一是基于持续时间。 其中一些基于小时,而另一些基于分钟。
喜欢
2.5 hours
1 hours
41 minutes
42 hours
...
栏目信息在这里
content_duration 3683 non-null object
我想将所有数据转换为分钟值,并且它们的列基于 float 或 int 类型。
我写了一个 function 来执行这个过程,但是将字符串转换为 int 时出现问题。
我该如何解决这个问题?
这是我的代码片段,如下所示。
def convertminutes(column):
value = column.str.split(' ').str[0].astype(float)
timetype = column.str.split(' ').str[1]
for i in range(len(timetype)):
if timetype[i] == "hours" or timetype[i] == "hour":
value[i] = value[i] * 60
else:
value[i] = value[i]
return value
我在下面显示的代码中调用了 function。
df["content_duration"] = convertminutes(df["content_duration"])
这是屏幕截图
尝试这个:
import pandas as pd
def convert_to_minutes(x):
return float(x.split()[0]) * 60 if 'hour' in x else float(x.split()[0])
df = pd.DataFrame({'content_duration': ['1 hour', '2.5 hours', '18 minutes','3 hours', '12 hours', '16 minutes', ]})
df['content_duration'] = df['content_duration'].apply(convert_to_minutes)
print(df)
Output:
content_duration
0 60.0
1 150.0
2 18.0
3 180.0
4 720.0
5 16.0
这是我的尝试:
def convertminutes(column):
map_dict = {"hours": 60, "hour": 60, "minute": 1, "minutes": 1}
expanded_df = column.str.split(' ', expand=True)
expanded_df[1] = copy_df[1].map(map_dict)
return expanded_df[0].astype(float) * expanded_df[1]
不是最有效的路线,但它有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.