我正在学习Python并试图解决问题,但被困在这里。我想执行以下操作:
数据帧称为:df_cleaned_sessions
它包含带有时间戳的两列:
datetime_only_first_engagement
datetime_sessions
为您提供信息,datetime_only_first_engagement
列的时间戳比datetime_sessions
小得多,sessions列具有很多NA值,因为此数据帧是左联接的结果。
我想执行以下操作:
查找datetime_only_first_engagement
时间戳等于datetime_sessions
时间戳的行,保存这些行的索引,并在数据框中创建一个名为“ is_conversion
”的新列,然后进行设置(匹配时间戳)索引到True
。其他索引应设置为False
。
希望有人可以帮助我!
非常感谢。
答案 0 :(得分:0)
据我了解,您需要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)
答案 1 :(得分:0)
df_cleaned_sessions['is_conversion'] = df_cleaned_sessions['datetime_only_first_engagement'] == df_cleaned_sessions['datetime_sessions']
答案 2 :(得分:0)
如果您提供了示例代码和预期的输出,会更容易,但是通过阅读您的问题,我觉得您希望执行以下操作:
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
的{{1}}列中的df
的{{1}}列:
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})
希望有帮助..!