我正在学习Python和试图解决一个问题,但来到这里卡住了。我想做到以下几点:
数据框被称为:df_cleaned_sessions
它包含时间戳两列:
datetime_only_first_engagement
datetime_sessions
为了您的信息datetime_only_first_engagement
列比datetime_sessions
少了很多的时间戳,会话列有很多NA值,因为这是数据框左侧的结果加入。
我想做到以下几点:
找到在哪里datetime_only_first_engagement
时间戳从datetime_sessions
等于时间戳行,从这些行保存索引,创建一个名为“is_conversion
”数据帧的新列,并设置这些(匹配时间戳)索引True
。其余指标应设置为False
。
希望可以有人帮帮我!
非常感谢。
那将是更容易,如果你已经提供了一个示例代码和预期的输出,但是通过阅读你的问题,我觉得你想做到以下几点:
import pandas as pd
让我们建立一个样本DF:
df = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8],[10,11]], columns=["A", "B"])
print(df)
A B
0 1 2
1 3 4
2 5 6
3 7 8
4 10 11
让我们假设DF1是:
df1 = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8],[9,10]], columns=["D", "E"])
print(df1)
D E
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
应用下面的代码,以检查是否在A
列df
在D
的列df1
存在:
df['is_conversion']= df['A'].isin(df1['D']).astype(bool)
print(df)
A B is_conversion
0 1 2 True
1 3 4 True
2 5 6 True
3 7 8 True
4 10 11 False
同样,对于你的问题,你可以在太匹配了相同的数据帧的不同列应用相同的逻辑。我想你需要:
df_cleaned_sessions['is_conversion'] = df_cleaned_sessions['datetime_only_first_engagement'].isin(df_cleaned_sessions['datetime_sessions']).astype(bool)
根据该意见:添加此上面的代码如下:
df_cleaned_sessions['is_conversion'] = df_cleaned_sessions['is_conversion'].replace({True:1, False:0})
使用np.where
备选答案:
import numpy as np
df_cleaned_sessions['is_conversion'] = np.where(df_cleaned_sessions['datetime_only_first_engagement'].isin(df_cleaned_sessions['datetime_sessions']),True,False)
希望可以帮助..!
据我了解,你需要numpy.where:
import numpy as np
df_cleaned_sessions['is_conversion'] = np.where(df_cleaned_sessions['datetime_only_first_engagement'] == df_cleaned_sessions['datetime_sessions'], True, False)
df_cleaned_sessions['is_conversion'] = df_cleaned_sessions['datetime_only_first_engagement'] == df_cleaned_sessions['datetime_sessions']