Python的大熊猫质疑匹配的行,找到索引和创建列

问题描述 投票:0回答:3

我正在学习Python和试图解决一个问题,但来到这里卡住了。我想做到以下几点:

数据框被称为:df_cleaned_sessions

它包含时间戳两列:

  1. datetime_only_first_engagement
  2. datetime_sessions

为了您的信息datetime_only_first_engagement列比datetime_sessions少了很多的时间戳,会话列有很多NA值,因为这是数据框左侧的结果加入。

我想做到以下几点: 找到在哪里datetime_only_first_engagement时间戳从datetime_sessions等于时间戳行,从这些行保存索引,创建一个名为“is_conversion”数据帧的新列,并设置这些(匹配时间戳)索引True。其余指标应设置为False

希望可以有人帮帮我!

非常感谢。

python pandas
3个回答
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

应用下面的代码,以检查是否在AdfD的列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)

希望可以帮助..!


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)

0
投票
df_cleaned_sessions['is_conversion'] = df_cleaned_sessions['datetime_only_first_engagement'] == df_cleaned_sessions['datetime_sessions'] 
© www.soinside.com 2019 - 2024. All rights reserved.