我有一个熊猫数据框(Python 2.11),其中将时间作为文本包含在一列中(格式为hh:mm:ss)。我只想获取小时(分钟或秒)。为此,我创建一个列表

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


这样我得到一个列表例如[10,23,00]。如何访问第一个(第二个或第三个)值以继续为数据帧中的每一行工作?

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


返回第一行,但不返回第一元素。

最佳答案

我认为您需要参数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

10-02 08:16
查看更多