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