Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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 按中的id向列组添加类别_Python_Pandas_Data Wrangling - Fatal编程技术网

Python 按中的id向列组添加类别

Python 按中的id向列组添加类别,python,pandas,data-wrangling,Python,Pandas,Data Wrangling,我有一个df,如下所示。共有4个政党,它们向选民发送电子邮件,并注明是否由选民打开 ID Party Emails_Sent Emails_Opened A21 2 3 1 A24 4 1 0 A21 1 5 0 A21 3 1 1 A27 3

我有一个df,如下所示。共有4个政党,它们向选民发送电子邮件,并注明是否由选民打开

    ID  Party   Emails_Sent   Emails_Opened
   A21    2         3               1
   A24    4         1               0
   A21    1         5               0
   A21    3         1               1
   A27    3         2               1
   A27    2         1               0
并非所有政党都向所有选民(ID)发送电子邮件。但是,我想将所有政党都包括在政党专栏中,并将“0”指定为电子邮件,并在未联系到下面这样的选民时打开

  ID  Party   Emails_Sent   Emails_Opened
   A21    1        5              0
   A21    2        3              1
   A21    3        1              1
   A21    4        0              0
   A24    1        0              0
   A24    2        0              0
   A24    3        0              0
   A24    4        1              0
   A27    1        0              0
   A27    2        1              0
   A27    3        2              1
   A27    4        0              0

   Am not sure how to approach this, any help is appreciated. Thanks
那么,让我们试一下:

将熊猫作为pd导入
df=pd.DataFrame(
{'ID':{0:A21',1:A24',2:A21',3:A21',4:A27',5:A27'},
“党”:{0:2,1:4,2:1,3:3,4:3,5:2},
“发送的电子邮件”:{0:3,1:1,2:5,3:1,4:2,5:1},
“电子邮件已打开”:(0:1、1:0、2:0、3:1、4:1、5:0})
#枢轴然后堆叠
df=df.pivot_表(index='ID',columns='Party',
值=['Emails\u Sent'、'Emails\u Opened'],
fill_value=0.stack().reset_index()
#重新排列列
df=df[['ID','Party','Emails\u Sent','Emails\u Opened']]
打印(df.to_字符串(索引=False))
输出:

 ID  Party  Emails_Sent  Emails_Opened
A21      1            5              0
A21      2            3              1
A21      3            1              1
A21      4            0              0
A24      1            0              0
A24      2            0              0
A24      3            0              0
A24      4            1              0
A27      1            0              0
A27      2            1              0
A27      3            2              1
A27      4            0              0