Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 如何使用groupby创建新表并删除重复项_Python_Python 3.x_Pandas_Csv - Fatal编程技术网

Python 如何使用groupby创建新表并删除重复项

Python 如何使用groupby创建新表并删除重复项,python,python-3.x,pandas,csv,Python,Python 3.x,Pandas,Csv,我想创建一个新的数据集,但重新排列数据时遇到了问题。 我当前的数据集如下图所示 id result 309209 Successful 309241 Successful 309241 Not Successful 309241 Not Successful 309241 Not Successful 我想将“成功”和“不成功”分开,并按ID对其每个实例进行计数,应该将ID更改为如下内容 id success fail tot

我想创建一个新的数据集,但重新排列数据时遇到了问题。 我当前的数据集如下图所示

id        result 
309209    Successful 
309241    Successful 
309241    Not Successful 
309241    Not Successful 
309241    Not Successful
我想将“成功”和“不成功”分开,并按ID对其每个实例进行计数,应该将ID更改为如下内容

id       success  fail total
309209   1        0    1
309241   1        3    4
我尝试过drop.duplicates或groupby来排列数据和计数实例,但我总是得到错误的结果。请有人帮我做这个!提前感谢。

页边距一起使用
并通过以下方式删除最后一行:

另一种解决方案包括重塑和新列
total

df1 = (df.groupby(['id','result'])
         .size()
         .unstack(fill_value=0)
         .assign(total = lambda x: x.sum(axis=1))
         .reset_index()
         .rename_axis(None, axis=1)
         .rename(columns={'Not Successful':'fail','Successful':'success'}))
df

    id       result
0   309209  Successful
1   309241  Successful
2   309241  Not Successful
3   309241  Not Successful
4   309241  Not Successful
使用及


对于给定的
id
状态是否唯一?@najeem否,我可以省略状态部分。您可以发布一个可以复制的样本数据吗?还有您的预期输出?您好。谢谢你的回答,但这会给出keyrerror:“id”,我无法“找出原因”(@HyunsooLee-我认为
id
不是列,而是索引,所以需要将
df=pd.crosstab(df['id'],df['result'],margins=True,margins\u name='total')
更改为
pd.crosstab(df.index,df['result'],margins=True,margins\u name='total'))
谢谢,它可以工作!但问题是输出只给出二进制结果,只给出总值0或1。从我上面的部分数据可以看出,它还应该打印出其他值:(我认为id的成功和失败实例是分开打印的,只提供0或1个输出,但我希望id的成功和失败实例结合起来。@HyunsooLee-抱歉,不明白,因为对我来说,它与您的dta示例配合得很好。问题在于真实数据?dat是机密数据吗?
    id       result
0   309209  Successful
1   309241  Successful
2   309241  Not Successful
3   309241  Not Successful
4   309241  Not Successful
df1 = df.join(pd.get_dummies(df.result,columns='result')).groupby('id').sum().reset_index()
df1['total'] = df1[df1.columns[1:]].sum(axis=1)
print(df1)

    id      Not Successful  Successful  total
0   309209  0               1           1
1   309241  3               1           4