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 按组转置数字列_Python_Pandas_Pivot_Pivot Table_Transpose - Fatal编程技术网

Python 按组转置数字列

Python 按组转置数字列,python,pandas,pivot,pivot-table,transpose,Python,Pandas,Pivot,Pivot Table,Transpose,生成测试数据的代码 import pandas as pd dftest = pd.DataFrame({'Amt': {0: 60, 1: 35.0, 2: 30.0, 3: np.nan, 4: 25}, 'Year': {0: 2012.0, 1: 2012.0, 2: 2012.0, 3: 2013.0, 4: 2013.0}, 'Name': {0: 'A', 1: 'A', 2: 'C',

生成测试数据的代码

import pandas as pd

dftest = pd.DataFrame({'Amt': {0: 60, 1: 35.0, 2: 30.0, 3: np.nan, 4: 25},
                       'Year': {0: 2012.0, 1: 2012.0, 2: 2012.0, 3: 2013.0, 4: 2013.0},
                       'Name': {0: 'A', 1: 'A', 2: 'C', 3: 'A', 4: 'B'}})
给予

Amt
最多有2个值对应于组
['Name','Year']
。我想旋转/转置,以便输出的形式

       Name  Year   Amt1  Amt2
0         A  2012   35    60
2         C  2012   30    NaN
3         A  2013   NaN   NaN
4         B  2013   25    NaN
我试过使用pivot、unstack、pivot_表


我真正想做的是确保每个
['Name','Year']
NA
)有两个
Amt
值(
NA
),我可以通过叠加所需的输出来实现这一点使用
groupby
apply

f = lambda x: x.sort_values(ascending=True).reset_index(drop=True)
dftest.groupby(['Name', 'Year']).Amt.apply(f).unstack()

我猜你会希望第一排的Amt1为60,Amt2为35。你想让它们先排序吗?我更喜欢按升序排序,这很简单,我想你现在可以忽略它
f = lambda x: x.sort_values(ascending=True).reset_index(drop=True)
dftest.groupby(['Name', 'Year']).Amt.apply(f).unstack()