Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据其他列中的值在dataframe中设置0和1_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 如何根据其他列中的值在dataframe中设置0和1

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

我想将列值设置为零,并基于数据帧中的另一个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              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