【问题标题】:Add dimension to pandas DataFrame向 pandas DataFrame 添加维度
【发布时间】:2013-03-01 16:20:36
【问题描述】:

我有一个 pandas DataFrame,其中一个字段包含一个以管道分隔的字符串。我已将其拆分为 apply 内的列表并将其添加到 DataFrame 中。管道分隔字符串中值的数量和内容各不相同。

df = DataFrame([{'wibble': 'a', 'pipestring': 'aa|aaa|aaa'}, 
    {'wibble': 'b', 'pipestring': 'bb|bbbb|bbb|bbbbbb'}])

df['pipelist'] = df['pipestring'].map(lambda x: x.split('|'))

我对 pandas 还很陌生,所以对此可能完全错误,但我认为这会更好地通过具有多个索引级别的 DataFrame 来表示,这样我就可以利用 panda 的索引和其他(极好的)工具。但是我无法弄清楚如何做到这一点。任何关于我应该做什么的指针/建议都非常感谢。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    更具体地说,您的计算目标是什么?

    这是一种拆分数据并创建组合框架的方法

    In [44]: x = df['pipestring'].apply(lambda x: pd.Series(x.split('|')))
    
    In [45]: x
    Out[45]: 
        0     1    2       3
    0  aa   aaa  aaa     NaN
    1  bb  bbbb  bbb  bbbbbb
    
    In [46]: df.join(x).set_index(['wibble'])
    Out[46]: 
                    pipestring                 pipelist   0     1    2       3
    wibble                                                                    
    a               aa|aaa|aaa           [aa, aaa, aaa]  aa   aaa  aaa     NaN
    b       bb|bbbb|bbb|bbbbbb  [bb, bbbb, bbb, bbbbbb]  bb  bbbb  bbb  bbbbbb
    

    【讨论】:

    • 谢谢 - 这正是我想要做的。我遇到的唯一问题(再次,请原谅我的无知)是我必须将 Series of Series 转换为列表并再次返回以让 pandas 格式化输出中的内容(否则我得到了 Series 的 DataFrame)@987654322 @ 再次感谢!
    【解决方案2】:

    开始使用它的最快方法是stack您的数据框:

    In [44]: df = df.stack()
    
    In [45]: df.ix[0, 'pipelist']
    Out[45]: ['aa', 'aaa', 'aaa']
    
    In [46]: df
    Out[46]: 
    0  pipestring                 aa|aaa|aaa
       wibble                              a
       pipelist               [aa, aaa, aaa]
    1  pipestring         bb|bbbb|bbb|bbbbbb
       wibble                              b
       pipelist      [bb, bbbb, bbb, bbbbbb]
    

    这会让你到达你想去的地方吗?

    【讨论】:

    • 对不起,我显然没有解释清楚。我正在尝试向我的 DataFrame 添加其他列(由我从转换 pipestring 获得的列表确定),而不是重组 DataFrame。 (基本上就像@Jeff 的回答一样。)
    猜你喜欢
    • 2020-12-31
    • 2015-09-04
    • 1970-01-01
    • 2018-04-08
    • 2017-01-30
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多