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