私は電子メールデータなどの広告データを扱っています。一人一人のために、彼らは変換された何の日、その後の日は、彼らが郵送されたかを述べ、その、メールレベルでforループなしで効率的にデータフレームを作成
1:私は2つのデータセットを持っています。
import pandas as pd df_emailed=pd.DataFrame() df_emailed['person']=['A','A','A','A','B','B','B'] df_emailed['day']=[2,4,8,9,1,2,5] df_emailed print(df_emailed) person day 0 A 2 1 A 4 2 A 8 3 A 9 4 B 1 5 B 2 6 B 5
誰かが変換したかどうかを示す要約データフレームがあります。
df_summary=pd.DataFrame() df_summary['person']=['A','B'] df_summary['days_max']=[10,5] df_summary['convert']=[1,0] print(df_summary) person days_max convert 0 A 10 1 1 B 5 0
私は一人一人のために、と言う最後のデータフレームの中にこれらを結合したいと思います:最大の日付に
- 1、彼らは電子メールで送信されたかどうか
- (0,1)データフレームの最終日に
- 変換されたかどうか(0,1)。
データフレームの最終日に変換されているものとします。
私はこれをネストされたforループを使って行うことを知っていますが、私はそれが信じられないほど非効率で、ばかなことだと思います。誰もこれを行う効率的な方法を知っていますか?
望ましい結果
df_final=pd.DataFrame()
df_final['person']=['A','A','A','A','A','A','A','A','A','A','B','B','B','B','B']
df_final['day']=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5]
df_final['emailed']=[0,1,0,1,0,0,0,1,1,0,1,1,0,0,1]
df_final['convert']=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0]
print(df_final)
person day emailed convert
0 A 1 0 0
1 A 2 1 0
2 A 3 0 0
3 A 4 1 0
4 A 5 0 0
5 A 6 0 0
6 A 7 0 0
7 A 8 1 0
8 A 9 1 0
9 A 10 0 1
10 B 1 1 0
11 B 2 1 0
12 B 3 0 0
13 B 4 0 0
14 B 5 1 0
あなたと幸せな休日をありがとうございました!
素晴らしいキャッチありがとうございました。 –