相关疑难解决方法(0)

将Pandas GroupBy对象转换为DataFrame

我从这样的输入数据开始

df1 = pandas.DataFrame( { 
    "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , 
    "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } )
Run Code Online (Sandbox Code Playgroud)

打印时显示如下:

   City     Name
0   Seattle    Alice
1   Seattle      Bob
2  Portland  Mallory
3   Seattle  Mallory
4   Seattle      Bob
5  Portland  Mallory
Run Code Online (Sandbox Code Playgroud)

分组很简单:

g1 = df1.groupby( [ "Name", "City"] ).count()
Run Code Online (Sandbox Code Playgroud)

和打印产生一个GroupBy对象:

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1
Run Code Online (Sandbox Code Playgroud)

但我最终想要的是另一个包含GroupBy对象中所有行的DataFrame对象.换句话说,我希望得到以下结果:

                  City  Name
Name …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe pandas pandas-groupby

433
推荐指数
9
解决办法
55万
查看次数

Pandas DataFrame Python 中的分组依据

我是 Pandas 新手,我想知道在下面的示例中我做错了什么。

我在这里找到了一个示例,解释了如何在应用组而不是系列后获取数据框。

df1 = pd.DataFrame( { 
"Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , 
"City" : ["Seattle", "Seattle", "Baires", "Caracas", "Baires", "Caracas"] })

df1['size'] = df1.groupby(['City']).transform(np.size)

df1.dtypes #Why is size an object? shouldn't it be an integer?

df1[['size']] = df1[['size']].astype(int) #convert to integer

df1['avera'] = df1.groupby(['City'])['size'].transform(np.mean) #group by again
Run Code Online (Sandbox Code Playgroud)

基本上,我想将相同的转换应用于我现在正在处理的巨大数据集,但我收到一条错误消息:

budgetbid['meanpb']=budgetbid.groupby(['jobid'])['probudget'].transform(np.mean) #can't upload this data for the sake of explanation

ValueError: Length mismatch: Expected axis has 5564 elements, new values have 78421 elements
Run Code Online (Sandbox Code Playgroud)

因此,我的问题是:

  1. 我怎样才能克服这个错误? …

python dataframe pandas

2
推荐指数
1
解决办法
2758
查看次数

标签 统计

dataframe ×2

pandas ×2

python ×2

multi-index ×1

pandas-groupby ×1