2017-03-06 117 views
1

我有一个熊猫数据框(Python 2.11),其中包含时间作为一列中的文本(格式hh:mm:ss)。我只想获得小时数(minus或seconds)。为此,我创建一个清单从熊猫列表中获取价值

df.Time.str.split(":") 

这样我得到一个清单,例如[10,23,00]。如何访问第一个(第二个或第三个)值以继续处理数据框中的每一行?

df.Time.str.split(":")[0] 

返回第一行而不是第一个元素。

回答

5

我认为你需要的参数expand=True - 那么输出的df 3列:

df.Time.str.split(":", expand=True) 

样品:

df = pd.DataFrame({'Time':['10:23:00', '11:23:00']}) 

print (df) 
     Time 
0 10:23:00 
1 11:23:00 

df[['hour','minute','seconds']] = df.Time.str.split(":", expand=True) 
print (df) 
     Time hour minute seconds 
0 10:23:00 10  23  00 
1 11:23:00 11  23  00 

如果不需要所有的值可以使用.str[]的列表中选择值 - docs

df['hour'] = df.Time.str.split(":").str[0] 
df['minute'] = df.Time.str.split(":").str[1] 
print (df) 
     Time hour minute 
0 10:23:00 10  23 
1 11:23:00 11  23 
+1

展开很好:-) + 1 – pansen

+0

@pansen - 谢谢。 – jezrael