Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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 如何在组中创建自定义列,然后在组中创建聚合_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何在组中创建自定义列,然后在组中创建聚合

Python 如何在组中创建自定义列,然后在组中创建聚合,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下格式的DataFrame | User | CodeID | Language | | ------------- |---------------| -------- | | foo | 1 | C | | foo | 2 | C | | foo | 3 | CPP | | bar

我有以下格式的
DataFrame

| User          | CodeID        | Language |
| ------------- |---------------| -------- |
| foo           | 1             | C        |
| foo           | 2             | C        |
| foo           | 3             | CPP      |
| bar           | 4             | C        |
| bar           | 5             | CPP      |
| bar           | 6             | Java     |
| bar           | 7             | CPP      |
| User | C  | CPP | Java | Total |
| ---- | -- | --- | ---- | ----- |
| foo  | 2  | 1   | 0    | 3     |
| bar  | 1  | 2   | 1    | 4     |
现在我想要的是计算每种语言中每个用户的代码数量。也就是说,我需要以下格式的
数据帧

| User          | CodeID        | Language |
| ------------- |---------------| -------- |
| foo           | 1             | C        |
| foo           | 2             | C        |
| foo           | 3             | CPP      |
| bar           | 4             | C        |
| bar           | 5             | CPP      |
| bar           | 6             | Java     |
| bar           | 7             | CPP      |
| User | C  | CPP | Java | Total |
| ---- | -- | --- | ---- | ----- |
| foo  | 2  | 1   | 0    | 3     |
| bar  | 1  | 2   | 1    | 4     |
需要指出的是,语言的数量是动态的。但是,如果有人能够提供一个具有固定语言集的解决方案,这是可以的提前感谢


您可以使用
交叉表
计算总计

In [223]: pd.crosstab(df.User, df.Language).assign(Total=lambda x: x.sum(axis=1))
Out[223]:
Language  C  CPP  Java  Total
User
bar       1    2     1      4
foo       2    1     0      3


我不会称之为“自定义列”,只是语言的交叉列表column@smci我是新来的熊猫,对这些术语不太熟悉。欢迎来到SOGreat solve!再次感谢。不过,我会要求另外两个即兴表演。首先,删除二阶索引。可能它有一个更具体的名字。但是,我不熟悉熊猫。希望你得到了我想要的。其次,我有
Language
值,比如
C++
C++4.0.0-8
C++4.3.2
。我想把它们都看成是<代码> CPP < /代码>。类似地,
C
对于
C
C99
。我该怎么做?