Python 如何在pandas中透视此数据帧

Python 如何在pandas中透视此数据帧,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我正在尝试使用以下组件重新配置数据帧: Name Date X Y 1 James 01/01/10 A 10 2 James 01/01/10 B 20 3 Sarah 02/01/10 A 30 4 Sarah 02/01/10 B 40 5 Sarah 03/01/10 A 50 需要将X列转换为名称和日期分组在一起的新列。我曾尝试使用pd.pivot和pd.pivot_表来获得下面的结果表,但没有成功,即pd.pivot_表(df,in

我正在尝试使用以下组件重新配置数据帧:

  Name   Date      X  Y
1 James  01/01/10  A  10
2 James  01/01/10  B  20
3 Sarah  02/01/10  A  30
4 Sarah  02/01/10  B  40
5 Sarah  03/01/10  A  50
需要将X列转换为名称和日期分组在一起的新列。我曾尝试使用pd.pivot和pd.pivot_表来获得下面的结果表,但没有成功,即
pd.pivot_表(df,index=['Name','Date'],columns='X')。reset_index()


同时指定
值='Y'

试试这个:

将熊猫作为pd导入
从io导入StringIO
df=pd.read\u csv(StringIO(“”)
姓名日期X Y
1詹姆斯01/01/10 A你好
2詹姆斯01/01/10 B在那里
3萨拉2010年1月2日A
4 Sarah 02/01/10 B数据
5 Sarah 03/01/10 A列“”),sep=“\s+”)
打印(pd.pivot_表(df,index=['Name','Date'],columns='X',values='Y',aggfunc=lambda X:''。连接(str(v)表示X中的v)).reset_index()
输出:

X   Name      Date        A      B
0  James  01/01/10       hi  there
1  Sarah  02/01/10  textual   data
2  Sarah  03/01/10   column    NaN

这看起来很棒。我尝试在一个数据帧上使用它,其中Y列是非数字的,并得到错误No numeric types to aggregate。这能用同样的方法吗?按名称和日期分组时,不应存在任何重复值。@WillacyMe,是的,您可以指定自己的agg func。(例如,
aggfunc=lambda x:''.join(str(v)表示x中的v)
@willachme我已经编辑了答案,使用了一个文本的
Y
columnPerfect,谢谢!我现在只需要降低这些新列的级别,因为我有第二个名为
X   Name      Date        A      B
0  James  01/01/10       hi  there
1  Sarah  02/01/10  textual   data
2  Sarah  03/01/10   column    NaN