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

Python 熊猫以复制品为轴心

Python 熊猫以复制品为轴心,python,pandas,dataframe,pivot,pivot-table,Python,Pandas,Dataframe,Pivot,Pivot Table,示例数据如下所示: d = pd.DataFrame({'name': ['Adam', 'Adam', 'Bob', 'Bob', 'Craig'], 'number': [111, 222, 333, 444, 555], 'type': ['phone', 'fax', 'phone', 'phone', 'fax']}) name number type ------ ------ ----- Adam 11

示例数据如下所示:

d = pd.DataFrame({'name': ['Adam', 'Adam', 'Bob', 'Bob', 'Craig'],
              'number': [111, 222, 333, 444, 555], 
              'type': ['phone', 'fax', 'phone', 'phone', 'fax']})

name    number  type
------   ------  -----
Adam    111     phone
Adam    222     fax
Bob     333     phone
Bob     444     phone
Craig   555     fax
我正在尝试将号码(电话和传真)转换为宽格式,理想的输出:

name    fax     phone
----    -----   -----
Adam    222.0   111.0
Bob     NaN     333.0
Bob     NaN     444.0
Craig   555.0   NaN
当我尝试使用
pivot
方法并运行以下代码时:

p = d.pivot(index='name', columns = 'type', values='number').reset_index()
我收到了错误
ValueError:Index包含重复的条目,由于Bob有两个电话号码,因此无法重新格式化


有解决方法吗?

这里是使用
cumcount
创建附加密钥

d['key']=d.groupby(['name','type']).cumcount()
p = d.pivot_table(index=['key','name'], columns = 'type', values='number',aggfunc='sum').reset_index()
p
Out[71]: 
type  key   name    fax  phone
0       0   Adam  222.0  111.0
1       0    Bob    NaN  333.0
2       0  Craig  555.0    NaN
3       1    Bob    NaN  444.0