Python 向数据帧添加维度

Python 向数据帧添加维度,python,pandas,Python,Pandas,我有一个pandas数据框,其中一个字段中包含一个管道分隔字符串。我已将其拆分为apply中的一个列表,并将其添加到数据帧中。管道分隔字符串中值的数量和内容各不相同 df = DataFrame([{'wibble': 'a', 'pipestring': 'aa|aaa|aaa'}, {'wibble': 'b', 'pipestring': 'bb|bbbb|bbb|bbbbbb'}]) df['pipelist'] = df['pipestring'].map(lambda x

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

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

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

我对panda很陌生,所以这可能是完全错误的,但我认为最好通过具有多个索引级别的数据帧来表示,这样我就可以利用panda的索引和其他(非常棒的)工具。但是我不知道怎么做。任何关于我应该做什么的建议都将不胜感激。

开始这项工作的最快方法是
堆叠您的数据帧:

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]

这能让你达到你想要的目标吗?

你的计算目标是什么

下面是一种将数据拆分并创建组合帧的方法

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

谢谢-这正是我想要做的。我遇到的唯一问题(请原谅我的无知)是,我必须将系列转换为列表,然后再转换回来,以使pandas按照您的输出格式化内容(否则我得到的是系列的数据帧)
x=DataFrame(list(df['pipestring'].apply(lambda x:pd.Series(x.split('.'))
再次感谢!对不起,我显然没有解释清楚。我试图向我的数据框中添加额外的列(由我从转换
管道字符串
中获得的列表决定),而不是重新构造数据框。(基本上与@Jeff的回答相同。)