如何在熊猫数据框中的特定索引处替换字符串

时间:2018-10-02 13:40:08

标签: python pandas datetime series

我在熊猫中有以下数据框

    code     bucket
    0        08:30:00-9:00:00
    1        10:00:00-11:00:00
    2        12:00:00-13:00:00

我要用0替换第7个字符1,我想要的数据帧是

   code     bucket
    0       08:30:01-9:00:00
    1       10:00:01-11:00:00
    2       12:00:01-13:00:00

在大熊猫中怎么做?

1 个答案:

答案 0 :(得分:0)

尽可能避免字符串操作

仅使用字符串会损失大量功能。尽管这可能是一次性的操作,但您会发现重复的字符串操作在时间和内存效率方面将很快变得昂贵。

改为使用pd.to_datetime

您可以使用datetime个对象向数据框添加其他系列。下面是一个示例,该示例另外还以您想要的格式创建了object dtype系列。

# split by '-' into 2 series
dfs = df.pop('bucket').str.split('-', expand=True)

# convert to datetime
dfs = dfs.apply(pd.to_datetime, axis=1)

# add 1s to first series
dfs[0] = dfs[0] + pd.Timedelta(seconds=1)

# create object series from 2 times
form = '%H:%M:%S'
dfs[2] = dfs[0].dt.strftime(form) + '-' + dfs[1].dt.strftime(form)

# join to original dataframe
res = df.join(dfs)

print(res)

   code                   0                   1                  2
0     0 2018-10-02 08:30:01 2018-10-02 09:00:00  08:30:01-09:00:00
1     1 2018-10-02 10:00:01 2018-10-02 11:00:00  10:00:01-11:00:00
2     2 2018-10-02 12:00:01 2018-10-02 13:00:00  12:00:01-13:00:00