전자 메일 데이터와 같은 일부 광고 데이터로 작업하고 있습니다. 각 사람을 위해, 그들은 전환되었다 어떤 일 다음 일 그들이 우편으로 발송 된 것을 언급하고 있음을, 메일 수준에서for 루프없이 효율적으로 데이터 프레임 생성
하나 : 나는 두 개의 데이터 세트가 있습니다.
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
나는 요약 사람이 변환 여부를 말한다 dataframe, 그리고 그들이 변환 일이있다.
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
나는 각 사람을 말한다 최종 dataframe에 이들을 결합하고 싶습니다 : 최대 날짜
- 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
을 원하는 당신과 행복한 휴일 감사합니다!
큰 캐치 당신을 어디 감사합니다. –