Python 每天新增一列

Python 每天新增一列,python,pandas,Python,Pandas,我有这个数据框: user day A 1 A 4 B 2 B 4 我想将数据帧更改为: user day_1 day_2 day_3 day_4 A 1 0 0 1 B 0 1 0 1 因此,即使在第三天没有用户,它也会自动生成第三天 我已经尝试过这个代码,但它不工作 for index, row in grouped_

我有这个数据框:

user     day
A        1
A        4
B        2
B        4
我想将数据帧更改为:

user   day_1   day_2   day_3   day_4
A      1       0       0       1
B      0       1       0       1
因此,即使在第三天没有用户,它也会自动生成第三天

我已经尝试过这个代码,但它不工作

for index, row in grouped_user.iterrows():
    grouped_user["day_" + str(int(row.active_period))] = 1
用于转换为字符串和聚合最大值:

如果有必要添加缺少的天数将用户转换为索引,请使用get_dummies for将所有可能的天数添加到列:

days = [f'day_{x}' for x in range(df['day'].min(), df['day'].max() + 1)]
df1 = (pd.get_dummies(df.set_index('user').astype(str))
         .max(level=0)
         .reindex(columns=days, fill_value=0)
         .reset_index())
print (df1)
  user  day_1  day_2  day_3  day_4
0    A      1      0      0      1
1    B      0      1      0      1
另一个解决方案包括和:

用于转换为字符串和聚合最大值:

如果有必要添加缺少的天数将用户转换为索引,请使用get_dummies for将所有可能的天数添加到列:

days = [f'day_{x}' for x in range(df['day'].min(), df['day'].max() + 1)]
df1 = (pd.get_dummies(df.set_index('user').astype(str))
         .max(level=0)
         .reindex(columns=days, fill_value=0)
         .reset_index())
print (df1)
  user  day_1  day_2  day_3  day_4
0    A      1      0      0      1
1    B      0      1      0      1
另一个解决方案包括和:

您可以使用以下功能:

结果:

day   day_1  day_2  day_3  day_4
user                            
A         1      0      0      1
B         0      1      0      1
您可以使用以下功能:

结果:

day   day_1  day_2  day_3  day_4
user                            
A         1      0      0      1
B         0      1      0      1

它的error键error:Index['day'],dtype='object']都不在[columns]中,我需要日期_3@OctavianWR您可以使用第一种解决方案,也可以使用第二种解决方案。您不应该同时使用两者,因为jezrael也将解决方案命名为df,这会覆盖原始解决方案df@jezrael糟糕,我没有更改df名称。虽然成功了,但我需要这一天_3@jezrael,我不知道为什么代码在第二次尝试时不起作用。结果都是0。第一次尝试没有问题,我想我可以接受两次answer@jezrael我不这么认为。我已经包括了itit的error键error:[Index['day'],dtype='object']都不在[columns]中,我需要日期_3@OctavianWR您可以使用第一种解决方案,也可以使用第二种解决方案。您不应该同时使用两者,因为jezrael也将解决方案命名为df,这会覆盖原始解决方案df@jezrael糟糕,我没有更改df名称。虽然成功了,但我需要这一天_3@jezrael,我不知道为什么代码在第二次尝试时不起作用。结果都是0。第一次尝试没有问题,我想我可以接受两次answer@jezrael我不这么认为。我已经包括在内了
day   day_1  day_2  day_3  day_4
user                            
A         1      0      0      1
B         0      1      0      1