2024-10-03 09:07:41 发布
网友
我有一个数据帧,共有5k个条目。它有1列date\u 1。我想创建一个新列isAuth,它的值可以是0和1。每个日期在数据集中可能有多个条目。我要计算数据集中的各个日期,并为特定日期的数据集分配70%1和30%0。例如:20-10-2019共有100个条目,其中70个条目的isAuth为1,30个条目的isAuth为0。有人能告诉我如何实现这一点吗
因为你没有提供数据库,我用雷达模块创建了一个。看看这是不是你想做的:
import pandas as pd import datetime import radar
创建具有重复日期的数据帧
inicio = datetime.date(year =2000, month =1, day =1) fim = datetime.date(year =2001, month =1, day =1) lista_dates = [radar.random_date(start =inicio, stop =fim) for i in range(5000)] df = pd.DataFrame({'date':lista_dates})
然后计算每个日期的重复次数:
df['count_dates'] = df.groupby('date')["date"].transform('count')
为1和0创建单独的变量:
df['perc_1'] = round(0.7*df['count_dates']) df['perc_0'] = round(0.3*df['count_dates'])
现在你知道重复的次数了
df.drop_duplicates(subset = 'date', inplace = True) df.reset_index(inplace = True) df = df.astype('object')
创建变量'isAuth'。请注意,每个单元格都有一个列表作为值
df['isAuth'] = 'a' for i in range(len(df)): df['isAuth'][i] = list([1])*int(df['perc_1'][i])+list([0])*int(df['perc_0'][i])
最后,使用explode展开每个列表
df = df.explode('isAuth').reset_index(drop = True) df
注:df.explode仅在0.25.0或更高版本中可用
因为你没有提供数据库,我用雷达模块创建了一个。看看这是不是你想做的:
创建具有重复日期的数据帧
然后计算每个日期的重复次数:
为1和0创建单独的变量:
现在你知道重复的次数了
创建变量'isAuth'。请注意,每个单元格都有一个列表作为值
最后,使用explode展开每个列表
注:df.explode仅在0.25.0或更高版本中可用
相关问题 更多 >
编程相关推荐