当前位置: 首页 > 知识库问答 >
问题:

熊猫:使用groupby重新创建数据透视表

昌正奇
2023-03-14

我有一个这样的数据帧:

df = pd.DataFrame({'country': ['usa','canada','usa','canada','mexico','usa'],
                   'color':   ['silver','brown','brown','black','silver','black'],
                   'car':     ['honda','honda','nissan','toyota','honda','toyota'],
                   'value': range(60,66)})
      car   color country  value
0   honda  silver     usa     60
1   honda   brown  canada     61
2  nissan   brown     usa     62
3  toyota   black  canada     63
4   honda  silver  mexico     64
5  toyota   black     usa     65

I can pivot by two indices like this:
df.pivot_table(index=['color','car'], columns='country', values='value')\
  .rename_axis(None, axis=1).reset_index()

    color     car  canada  mexico   usa
0   black  toyota    63.0     NaN  65.0
1   brown   honda    61.0     NaN   NaN
2   brown  nissan     NaN     NaN  62.0
3  silver   honda     NaN    64.0  60.0

我想知道我们如何使用GROUPBY实现相同的结果?

感谢帮助。

类似的问题:
Pandas列值到列?

共有1个答案

包和泰
2023-03-14

按颜色、汽车和国家对数据框进行分组,并找到列值的平均值。拆散并reset_index。

new_df = df.groupby(['color', 'car', 'country']).value.mean().unstack().reset_index()
new_df.columns.name = None


    color   car     canada  mexico  usa
0   black   toyota  63.0    NaN     65.0
1   brown   honda   61.0    NaN     NaN
2   brown   nissan  NaN     NaN     62.0
3   silver  honda   NaN     64.0    60.0
 类似资料:
  • 问题内容: 我有一个如下所示的df: 我正在尝试创建一个如下所示的df: 我试过了 但这不是我要寻找的。 任何指导表示赞赏 问题答案: 那不是新的专栏,而是新的DataFrame: 要获得想要的结果,请使用: 要获得“新列”,您可以使用transform: 我建议阅读docs的split- apply-combine部分 。

  • 问题内容: 我正在将具有两列(A和B)的记录列表转换成矩阵表示形式。我一直在熊猫中使用数据透视功能,但结果最终还是很大。大熊猫支持枢轴化为稀疏格式吗?我知道我可以先将其旋转,然后将其转换为某种稀疏表示,但并不像我想要的那么优雅。我的最终目标是将其用作预测模型的输入。 另外,大熊猫之外是否还有某种稀疏的枢轴能力? 编辑:这是一个非稀疏枢轴的示例 这将创建一个矩阵,其中可能包含人和事物的所有可能组合,

  • 问题内容: 给定下面的熊猫DataFrame: 我想对数据重新采样以每小时计数一次,同时按位置分组以生成如下所示的数据框: 我尝试了resample()和groupby()的各种组合,但是没有运气。我将如何处理? 问题答案: 在我的原始帖子中,我建议使用。如今,使用代替。语法在很大程度上是相同的,但现在已不支持。 此外,虽然只能按DatetimeIndex分组,但可以按日期时间 列进行分组,而您可

  • 问题内容: 我正在尝试使用具有相似列值的行来估算值。 例如,我有这个数据框 我想使用相似的列[‘one’]和[‘two’]的键,并且如果列[‘three’]并非完全是nan,则从具有相似的键的行中插值[ ‘3’] 这是我的愿望结果 您会看到键1和3不包含任何值,因为现有值不存在。 我试过使用groupby fillna() 这给了我一个错误。 我尝试了正向填充,这给了我一个相当奇怪的结果,那就是它

  • 我有一个df,看起来像: 作为pd进口熊猫 df df

  • 我必须根据以下col1、col2和loc的数据进行分组,并计算col3中的项数。此外,还应考虑开始和结束日期,即日期应在2021 1月1日至2021 1月31日之间。最终结果应显示在col4中。 数据 预期输出