【问题标题】:Pandas create new column with all the entries from another column corresponding to a unique valuePandas 创建新列,其中包含与唯一值对应的另一列中的所有条目
【发布时间】:2020-02-20 21:57:50
【问题描述】:

如果问题不够清楚,我很抱歉。假设我有这个数据框:

timestamp source dest size

1          a      b     5
1          c      d     6
2          c      e     7
2          d      a     8

从这个数据框中我想要这样的东西:

timestamp      link        size
 1             a b c d     5 6
 2             c e d a     7 8

我怎样才能做到这一点?

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您也可以使用 pandas 数据框的 groupby 方法。 确保您的 size 列包含字符串。

    df['link'] = df['source'] + ' ' + df['dest']
    df = df.drop(['source', 'dest'], axis = 1)
    newDf = df.groupby('timestamp').agg(lambda col: ' '.join(col))
    

    【讨论】:

      【解决方案2】:

      这是一个添加了几个步骤的枢轴,因为您希望在两列上相互独立地进行枢轴。

      u = df.melt('timestamp')
      m = u['variable'].isin(['source', 'dest'])
      
      u.loc[m, 'variable'] = 'link'
      
      u.pivot_table(
        'value', 'timestamp', 'variable', aggfunc=list)
      

      variable           link    size
      timestamp
      1          [a, c, b, d]  [5, 6]
      2          [c, d, e, a]  [7, 8]
      

      首先使用rename 的替代方法

      d = dict(source='link', dest='link')
      
      df.rename(columns=d).melt('timestamp').pivot_table(
        'value', 'timestamp', 'variable', aggfunc=list)
      

      variable           link    size
      timestamp
      1          [a, c, b, d]  [5, 6]
      2          [c, d, e, a]  [7, 8]
      

      【讨论】:

      • 它给出 [a,c,b,d] 但我真的需要 [a,b,c,d],很难得到吗?
      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 2022-11-11
      • 2021-09-25
      • 2017-04-09
      • 2019-12-07
      • 1970-01-01
      • 2021-10-17
      • 2015-05-29
      相关资源
      最近更新 更多