pandasによるデータフレームで0~23のhour列と、0~60のminute列があり、その2列からtime列("%H:%M"の形式)を作りたいと考えています。  
ですが、hour、minuteともにint型だからかエラーが出てうまくいきません。  
どのように対処すればよろしいでしょうか？
CC BY-SA 4.0
2019-12-14T15:47:06.597
61443
2020-01-10T12:26:22.147
12457
question
python python3 pandas
時間を望んだformatで表示させる方法
```

    In [2]: df = pd.DataFrame([[1, 15], [2, 30], [3, 0]], columns=['hour', 'minute'])
          : df
    Out[2]:
       hour  minute
    0     1      15
    1     2      30
    2     3       0
    
```

上記のようなデータフレームが与えられたとして、 dataframe 自身のの文字列操作だけでやるとすると、

```

    In [3]: df[['hour', 'minute']].astype(str).apply(lambda s: s.str.zfill(2)).apply(
          :     lambda s: s.str.cat(sep=':'),
          :     axis=1
          : )
    Out[3]:
    0    01:15
    1    02:30
    2    03:00
    dtype: object
    
```

になるかなと思いました。
CC BY-SA 4.0
2020-01-10T07:40:59.703
62128
2020-01-10T07:40:59.703
754
61443
answer
> hour、minuteともにint型だからかエラーが出てうまくいきません。

だったら文字列型に変換するとよいのでは

```

    import pandas as pd
    
    df = pd.DataFrame({'hour':[1,2,3], 'minute':[10,20,30]})
    
    r = df.hour.astype(str) + ":" + df.minute.astype(str)
    #0    1:10
    #1    2:20
    #2    3:30
    #dtype: object
    
```

apply 使うとこんな感じ

```

    r = df[['hour','minute']].astype(str).apply(':'.join ,axis=1)
    #0    1:10
    #1    2:20
    #2    3:30
    #dtype: object
    
```

２つ目の方法であれば文字列型でなくともできる

```

    r = df.apply(lambda d:f"{d.hour}:{d.minute:02d}", axis=1)
    #0    1:10
    #1    2:20
    #2    3:30
    #dtype: object
    
```

これが一番シンプルかな
CC BY-SA 4.0
2020-01-10T12:26:22.147
62136
2020-01-10T12:26:22.147
24801
61443
answer