将DataFrame(长格式数据)重塑为“摘要”DataFrame

时间:2014-07-30 21:24:34

标签: python excel group-by dataframe reshape

所有,我是python的新手。我正在尝试自动重塑我通常在excel中执行如下

#Import long form data from CSV into pandas data frame
In 1: Data = [My Long Form DataFrame imported from a CSV file]

City        Population
Chicago     1,245
Los Angeles 2,457
New York    998
Chicago     1,854
New York    1,654
Los Angeles 2,478
Los Angeles 760
more...

#Reshape "Data" DataFrame to a summary DataFrame "DataByCity"
In 2: DataByCity = pandas.DataFrame(Data.reset_index().groupby(['City'])['City'].count(), columns = ['Count_Cities'])

Out 2: 
City        Count_Cities
Chicago      5
New York    10
Los Angeles  8

接下来(需要帮助),我需要在“Data”到“DataByCity”中添加更多列。例如,我需要按城市将人口数量从“数据”加到一个列表中,并将该列表附加到“DataByCity”。

In 3: ??????
Out 3: 
City     Count_Cities  Sum_Pop
Chicago      5         10,128
New York    10         18,457
Los Angeles  8         16,950

最后,我需要将计算出的第四列添加到“DataByCity”(['Sum_Pop'] / ['Count_Cities'])

In 4: ???
Out 4: 
City     Count_Cities  Sum_Pop  Avg_Pop
Chicago      5         10,128   2,025.6
New York    10         18,457   1,845.7
Los Angeles  8         16,950   2,118.75

感谢任何帮助!我已经搜索了几天这些论坛,以及python文档。我只是不能把线索放在一起。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以在此处找到您想要的内容:Applying multiple functions at once

从数据作为数据框开始,将城市和人口列为列。

import pandas as pd
import numpy as np

grouped = Data.groupby('City')

df = grouped['Population'].agg({'Count_Cities' : np.count,
                                'Sum_Pop' : np.sum,
                                'Avg_Pop' : np.mean})

或者,您可以使用数据透视表功能。

您最后提出的问题的答案是here,没有任何问题。