Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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 - Fatal编程技术网

Python 连接表中的列值-参数

Python 连接表中的列值-参数,python,pandas,Python,Pandas,我有一张桌子 mark name total point 70 bala 100 10 80 bala 100 10 80 bala 100 10 100 karthik 100 5 100 karthik 150 5 100 karthik 150 5 50 abdul 80 10 50 abdul 80 5 50 abdul 8

我有一张桌子

mark     name total  point
 70     bala   100    10
 80     bala   100    10
 80     bala   100    10
100  karthik   100     5
100  karthik   150     5
100  karthik   150     5
50     abdul   80     10
50     abdul   80      5
50     abdul   80      6
我想将此表拆分如下(删除基于名称的重复列,唯一列将用逗号分隔)

使用

或者


借助透视表

df.pivot_table(index='name',aggfunc=lambda x : ','.join(x.unique().astype(str))).reset_index()
输出:

name mark point total 0 abdul 50 10,5,6 80 1 bala 70,80 10 100 2 karthik 100 5 100,150 姓名标记总分 0阿卜杜勒50 10,5,6 80 1巴拉70,80 10 100 2 karthik 100 5 100150 使用:


我们也可以在pivot表中这样做。所以我们可以保存很多参数:)。和+1用于维护订单。
In [863]: (df.astype(str).groupby('name', as_index=False, sort=False)
             .apply(lambda x: x.apply(lambda x: ','.join(x.unique()))))
Out[863]:
    mark     name    total   point
0  70,80     bala      100      10
1    100  karthik  100,150       5
2     50    abdul       80  10,5,6
df.pivot_table(index='name',aggfunc=lambda x : ','.join(x.unique().astype(str))).reset_index()
name mark point total 0 abdul 50 10,5,6 80 1 bala 70,80 10 100 2 karthik 100 5 100,150
df = (df.astype(str)
       .groupby('name', as_index=False, sort=False)
       .agg(lambda x: ','.join(x.unique())))
print (df)
      name   mark    total   point
0     bala  70,80      100      10
1  karthik    100  100,150       5
2    abdul     50       80  10,5,6