Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 Pandas-使用另一列中的值进行热编码_Python_Pandas - Fatal编程技术网

Python Pandas-使用另一列中的值进行热编码

Python Pandas-使用另一列中的值进行热编码,python,pandas,Python,Pandas,我有一个数据框,如下所示 idx vol loc 0 1 2 unit 68 1 1 1 unit 179 2 1 2 unit 345 3 2 1 unit 233 4 2 1 unit 235 5 2 2 unit 313

我有一个数据框,如下所示

idx vol loc             
0   1   2   unit 68             
1   1   1   unit 179                
2   1   2   unit 345                
3   2   1   unit 233                
4   2   1   unit 235                
5   2   2   unit 313                
6   2   1   unit 313    
我的目标是用“vol”值填充一个热编码列,对“loc”列进行一个热编码。热衷于在大熊猫身上使用“get_dummies”和“groupby”方法

我的预期输出如下。我的挑战是,我无法在新创建的one热编码列中填充“vol”列中的值

试图花费2天时间,但仍未找到解决方法。希望你能给我一个提示

期望

MWE

输出

你能行

df=df.set_index('idx')
s=df['loc'].str.get_dummies().mul(df['vol'],axis=0).sum(level=0)
     unit179  unit233  unit235  unit313  unit345  unit68
idx                                                     
1          1        0        0        0        2       2
2          0        1        1        3        0       0
你能行

df=df.set_index('idx')
s=df['loc'].str.get_dummies().mul(df['vol'],axis=0).sum(level=0)
     unit179  unit233  unit235  unit313  unit345  unit68
idx                                                     
1          1        0        0        0        2       2
2          0        1        1        3        0       0
IIUC

输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
再加上总数

df.pivot_table('vol', 'idx', 'loc', aggfunc='sum', 
               fill_value=0, margins=True, margins_name='vol')
输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
下降行总计:

df.pivot_table('vol', 'idx', 'loc', aggfunc='sum', 
               fill_value=0, margins=True, margins_name='vol')\
  .drop('vol')
输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
IIUC

输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
再加上总数

df.pivot_table('vol', 'idx', 'loc', aggfunc='sum', 
               fill_value=0, margins=True, margins_name='vol')
输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
下降行总计:

df.pivot_table('vol', 'idx', 'loc', aggfunc='sum', 
               fill_value=0, margins=True, margins_name='vol')\
  .drop('vol')
输出:

loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68
idx                                                           
1           1         0         0         0         2        2
2           0         1         1         3         0        0
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5
vol         1         1         1         3         2        2   10
loc  unit 179  unit 233  unit 235  unit 313  unit 345  unit 68  vol
idx                                                                
1           1         0         0         0         2        2    5
2           0         1         1         3         0        0    5

我觉得他也需要在输出中包括vol:-我觉得他也需要在输出中包括vol:-