2017-10-01 3 views
0

に基づいている場合、このコードは私に次のデータフレーム与える:Pythonのパンダの文がlen

:私は私が得る次のコードで11時小さいペースデータを解析しようとした場合

import pandas as pd 

pace=['06:40','10:05','7:25','10:30'] 
distance=['10','20','30','40'] 
dd=list(zip(pace,distance)) 
df=pd.DataFrame(dd,columns=['pace','distance']) 

    pace distance 
0 06:40  10 
1 10:05  20 
2 7:25  30 
3 10:30  40 

input='11:00' 
length_input=len(input) 
df=df[df['pace']<input] 

    pace distance 
0 06:40  10 
1 10:05  20 
3 10:30  40 

len == 4のすべてのペースデータの先頭にゼロを追加して、7:25のようなペース値が含まれるようにしたいと考えています。私は、次のコードを試してみた:

if df['pace'].astype(str).map(len)==4: 
    df['pace']='0'+df['pace'].astype(str) 

エラーでこのコードの結果 - とValueError:シリーズの真理値があいまいです。 a.empty、a.bool()、a.item()、a.any()またはa.all()を使用します。

このエラーを検索した後、または(|)と(&)のドキュメントが見つかりました。どんな助けでも大歓迎です。約

df['pace'] = df['pace'].apply(lambda x: x if len(x) > 4 else '0' + x) 

apply()方法はpace列の各列に関数を適用する方法

答えて

3

。この例では、行のlenが4より大きい場合は行を変更しないラムダ関数を使用し、それ以外の場合は'0'をその先頭に追加します。それは作品

df['pace'] = pd.to_datetime(df['pace']).dt.time 
+0

、かつ明確な説明とdatetime.timeのオプションが非常に役立ちます。

しかし、おそらくそうのようdatetime.timepace列を変換するためにきれいになります。 – Kurt