Python 如何根据其他列中的值在dataframe中设置0和1
我想将列值设置为零,并基于数据帧中的另一个coulmn将列值设置为一 我尝试了多种方法(使用空值透视和get_dummies等),但是无法达到预期的结果,看起来值被覆盖了 有人能帮忙吗 df df1- 按事务id分组显示以下格式Python 如何根据其他列中的值在dataframe中设置0和1,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想将列值设置为零,并基于数据帧中的另一个coulmn将列值设置为一 我尝试了多种方法(使用空值透视和get_dummies等),但是无法达到预期的结果,看起来值被覆盖了 有人能帮忙吗 df df1- 按事务id分组显示以下格式 item_code sale_val Trans_id 11 10.0 111 13 10.0 222 12 2.0 111 12
item_code sale_val Trans_id
11 10.0 111
13 10.0 222
12 2.0 111
12 2.0 333
13 1.05 111
11 1.05 222
14 3.0 111
14 3.0 333
pd.get_dummies针对df1运行,并在给定trans_id中设置值“1”第一项id。
Ex:Trans_id 111,项目代码11设置为1,12到14项目代码设置为0,或者在为其他Trans_id设置值时可能会被覆盖
Trans_id/index 11 12 13 14
111 1 0 0 0
222 1 0 0 0
333 1 0 0 0
创建索引,然后按第一级获取max
:
#faster solution in large df
df1 = df[df["Trans_id"].duplicated(keep=False)]
df2 = pd.get_dummies(df1.set_index('Trans_id')['item_code']).max(level=0)
print (df2)
11 12 13 14
Trans_id
1111 1 1 1 1
2222 1 0 1 0
3333 0 1 0 1
创建索引,然后按第一级获取max
:
#faster solution in large df
df1 = df[df["Trans_id"].duplicated(keep=False)]
df2 = pd.get_dummies(df1.set_index('Trans_id')['item_code']).max(level=0)
print (df2)
11 12 13 14
Trans_id
1111 1 1 1 1
2222 1 0 1 0
3333 0 1 0 1
在一行代码中:
pd.DataFrame(df.pivot(columns='item_code',index='Trans_id').fillna(0)>0).astype(int)
sale_val
item_code 11 12 13 14
Trans_id
111 1 1 1 1
222 1 0 1 0
333 0 1 0 1
在一行代码中:
pd.DataFrame(df.pivot(columns='item_code',index='Trans_id').fillna(0)>0).astype(int)
sale_val
item_code 11 12 13 14
Trans_id
111 1 1 1 1
222 1 0 1 0
333 0 1 0 1
pd.DataFrame(df.pivot(columns='item_code',index='Trans_id').fillna(0)>0).astype(int)
sale_val
item_code 11 12 13 14
Trans_id
111 1 1 1 1
222 1 0 1 0
333 0 1 0 1