我是熊猫新手,我想知道我在做什么错在下面的例子中。group by Pandas DataFrame Python
我找到一个例子here解释了如何在应用一个组而不是一个系列之后获得数据帧。
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
基本上,我想申请相同的变换到一个巨大的数据集,现在我的工作,但我得到一个错误信息:
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
因此,我的问题是:
- 我该如何克服这个错误?
- 为什么在应用group by而不是整数类型时会得到一个对象类型?
让我们说我想从
df1
获得一个数据框与独特的城市和他们各自的count(*)
。我知道我可以做这样的事情newdf = df1.groupby([“市”])。大小()
不幸的是,这是一个系列的,但我想有两列数据帧,City
和全新变量,比如说countcity
。如何从像本例中的分组操作那样获取数据框?
- 你能给我举一个
select distinct
在熊猫的例子吗?
对于3做的,我会加入'newdf = newdf补充它.reset_index('City')'然后'newdf.columns = ['City','countcity']' – Nestorghh