【发布时间】:2017-06-11 20:25:04
【问题描述】:
我有一些工作代码可以将小时转换为分钟(以小时值为条件),但我目前正在迭代数据帧行,这对于较大的数据帧似乎不是很有效
我有 2 个熊猫系列(实际上这些是更大数据框的列):
hours = pd.Series([0,10,15,20,30])
mins = pd.Series([10,0,0,20,10])
我想做的是:
- 返回包含以分钟为单位的总持续时间的单个系列(即将小时转换为分钟,然后添加到分钟值)
- 如果小时值为15、30、45、60或90,直接加到分钟值上,不用时分转换,然后设置小时为0。否则,将小时转换为分钟,再做加法李>
我希望输出是以下系列(注意索引 2 和 4):
0 10.0
1 600.0
2 15.0
3 1220.0
4 40.0
我写了以下实现我想要的功能:
def convert_time(hours, minutes):
df_duration = pd.DataFrame({"hours": hours, "minutes": minutes}).astype(float)
series_converted = pd.Series()
# Replace nan with zero
df_duration = df_duration.fillna(0)
# Convert out of bound hour values, add to minutes
for i in range(df_duration.shape[0]):
if df_duration.iloc[i]["hours"] in (15,30,45,60,90):
cur_hours = 0
cur_mins = df_duration.iloc[i]["hours"] + df_duration.iloc[i]["minutes"]
else:
cur_hours = df_duration.iloc[i]["hours"]
cur_mins = df_duration.iloc[i]["minutes"]
series_converted.set_value(i,(cur_hours * 60) + cur_mins)
return series_converted
在不迭代数据帧行的情况下,在 Pandas 中执行此操作的正确方法是什么?当涉及条件时,我似乎无法弄清楚如何在 2 列中使用 pandas 掩码
【问题讨论】: