创建一个二进制列以进行发生

时间:2019-03-06 15:41:23

标签: python pandas

我有一个panadas数据框,它基本上是特定日期发生情况的汇总视图。但是,四个月的窗口中并未包含所有的天数。 例如,

dates = ['2019-02-27', '2019-02-16', '2019-02-01', '2019-01-15']
count_s = [2,3,4,5]
df = pd.DataFrame({'dates': dates, 'count': count_s})
df["dates_ind"] = pd.to_datetime(df["dates"], format="%Y-%m-%d")
df.index = pd.DatetimeIndex(df["dates_ind"])

我需要创建一个全天(相对于今天为4个月)的新数据框。如果日期在两个数据框(new和df)之间相对应,则需要创建一个新的1或0列。如果它存在于df中,则应标记为1否则为0。

2 个答案:

答案 0 :(得分:1)

使用- name: Delete launch configuration sudo: yes command: > aws autoscaling delete-launch-configuration --region {{ asg.region }} --launch-configuration-name {{ asg.launch_configuration.name }}_{{ now }} 创建new_df,然后检查索引是否在其他pd.date_range中。 DataFrame为您提供日历月减法,当月份的天数不同时,日历月减法不会越过月份边界。

pd.offsets.DateOffset(months=4)

输出:import pandas as pd today = pd.to_datetime('today').normalize() df_new = pd.DataFrame(index=pd.date_range(today-pd.offsets.DateOffset(months=4), today, freq='D')) df_new['exist'] = df_new.index.isin(df.index).astype(int)

df_new

答案 1 :(得分:0)

col = df.dates.apply(lambda x: 1 if x in dates else 0)

您可以用数据框列名称替换'col'。

相对于4个月的时间,您可以使用pd.offsets.MonthBegin,然后使用结束独家每日日期范围:

dts = pd.date_range(month_start, month_start + pd.offsets.MonthBegin(1), closed="left")

请注意,month_start应该是datetime.datetime,而不是字符串。