私は、各旅行の日時情報とユーザIDを持つ旅行データを持っています。私は、そのユーザーの次回の旅行のdatetime情報で "next_trip"という新しい列を作成しようとしています。ここでforループ内のパンダクエリ条件
はAll_Dataという名前のデータサンプル(パンダのデータフレーム)、です:
HoraDTRetirada idpass
2016-02-17 15:36:00 39579449489
2016-02-24 19:13:00 48663837456
2016-02-26 09:20:00 72986744521
2016-02-28 12:11:00 85935174645
2016-02-28 14:55:00 11533148958
私はこれを行うに思っ方法は、最初にすることによって、彼の次の旅行を見つけ、その後、それぞれ異なるユーザー旅行のため、日時によってエントリをソートしてユーザーID(idpass)によるフィルタリング(クエリによる)。私が再インデックス化するのは、重複エラーが発生したためです。 そして、ここでは、私がこれまでに作ってみたコードです:
unique_ids = All_Data['idpass'].unique()
temp = All_Data.sort_values('HoraDTRetirada')
temp['index'] = np.arange(len(temp))
temp = temp.set_index('index')
for row in unique_ids:
temp["next_trip"]=temp.query('idpass == "%s"' % row)["HoraDTRetirada"].shift(-1)
私の問題は、forループに関連しています。これを手動で行い、クエリ条件で使用するidpassの値を選択すると、そのユーザーのトリップの正しいエントリが新しい列(next_trip)として取得されますが、forループを使用してすべてのidpass値に対して行われるようにしようとすると、私はNaTしか得ません。
何か助けていただければ幸いです。ありがとう!
完璧に動作します。ありがとうございました! – Helk
次のコードで、各ユーザー(idpass)のsame_day_tripsの数を持つ列を生成するために同じ考えを適用しようとしていますが、動作しません: 'All_Data ['same_day_trips'] = All_Data.groupby([ idpass '、' day '、' month '])。value_counts() '。 'AttributeError: 'DataFrameGroupBy'オブジェクトに 'value_counts'属性がありません。 – Helk
size-' All_Data1 = All_Data.groupby(['idpass'、 'day'、 'month'])が必要です。 ( 'idpass')。transform( 'size') 'size ')' size =' size '); //新しい列に必要なものがあれば 'All_Data [' same_day_trips '] = All_Data.groupby([' idpass '、' day '、' month ' – jezrael