Python:使用pivot>意外结果将行中的一些数据作为列值移动

2024-09-30 22:14:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想不出一种方法,可以让数据框中的某些行对应新的列

让我们以以下熊猫数据帧为例:

df = pandas.DataFrame({'date':[13,13,13,13],'city':['NY','NY','SF','SF'],'timeOfTheDay':['day','night','day','night'],'count':[2,3,4,5]})

输出:

^{tb1}$

我想要的是:

^{tb2}$

我尝试使用pivot_表:

df.pivot_table('count',['date','city'],'timeOfTheDay')

或类似地:

pandas.pivot_table(df,index=['date','city'],columns=['timeOfTheDay'],values=['count'])

结果我得到的不是预期的结果:

timeOfTheDay  day  night
date city               
13   NY       3.0    NaN
     SF       NaN    4.0

Tags: 数据方法citypandasdfdatecounttable
1条回答
网友
1楼 · 发布于 2024-09-30 22:14:01

您可以使用pivot_table进行此操作-

>> import pandas as pd
>>> df = pandas.DataFrame({'date':[13,13,13,13],'city':['NY','NY','SF','SF'],'timeOfTheDay':['day','night','day','night'],'count':[2,3,4,5]})
>>> pivot_df = pd.pivot_table(df,index=['date','city'],columns=['timeOfTheDay'],values=['count'])
>>> pivot_df.columns = pivot_df.columns.droplevel()
>>> pivot_df.columns.name = None
>>> pivot_df
           day  night
date city            
13   NY      2      3
     SF      4      5
>>> 
>>> 
>>> pivot_df = pivot_df.rename(columns={'day':'countDay','night': 'countNight'})
>>> pivot_df
   date city  countDay  countNight
0    13   NY         2           3
1    13   SF         4           5
>>> 
>>> 



相关问题 更多 >