【问题标题】:python pandas create a list group by valuepython pandas按值创建列表组
【发布时间】:2019-01-12 14:25:50
【问题描述】:

我在 python 中有一个数据框:

    pID     sID     time 
0   2133    152414  2018-06-16
1   1721    152912  2018-06-17
2   2264    152912  2018-06-18

我想创建一个以 sID 为键的新表和 pID 列表:

        pID time
152414 2133 2018-06-16
152912 1721 2018-06-17
       2264 2018-06-18

不遍历所有数据框的最佳方法是什么? 我试过了:

df.pivot(index='sID', columns=['pID', 'time'])

但是得到了:

ValueError:所有数组的长度必须相同

对于这些 3 行的表 谢谢!

【问题讨论】:

  • @mxmt 它没有帮助:: df.set_index('sID') 返回一个包含 3 行的数据帧:这意味着有 2 行的索引为 152912 ,我得到一个 KeyError。我需要一个只有两行的数据框

标签: python pandas pivot-table pandas-groupby data-munging


【解决方案1】:

试试这个:

import io
import pandas as pd

f = io.StringIO('''
2133    152414  2018-06-16
1721    152912  2018-06-17
2264    152912  2018-06-18''')

df = pd.read_csv(f, sep='\s+', header=None, names=['pID', 'sID', 'date'])
df.set_index(['sID', 'pID'])

【讨论】:

  • 我得到了这张表,但现在我要做什么pIDs = df[152912] 我得到的是KeyError: 152912,而不是一张两行的表
  • @oren_ISP 您应该阅读 Pandas 手册,因为您根本不了解索引。使用df.loc[152912]
  • 据我了解,df[i] 和df.loc[i] 的区别在于后者支持编辑。不是这样吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2020-07-22
  • 2021-03-27
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多