python按列拆分pd数据帧

时间:2016-10-22 22:28:20

标签: python pandas

是否有一个函数可以通过特定的列值将pandas.dataframe对象拆分为多个子数据帧?例如,如果我有

>>> from io import StringIO
>>> someLines=StringIO('''\
... line1
... line2
... line3
... ''')
>>> content=set(someLines)
>>> content
{'line1\n', 'line2\n', 'line3\n'}

我想要的结果如下:

A   1
B   2
A   3
B   4

A   1
A   3

在R中,它是拆分功能。怎么在python中完成?我知道我可以在forloop中使用子集。但有功能吗?感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用groupby()和list-comprehension来提取子数据框列表,其中每个子数据框只包含一个ind值:

import pandas as pd
from StringIO import StringIO

df = pd.read_csv(StringIO("""A   1
B   2
A   3
B   4"""), sep = "\s+", names=['ind', 'value'])

lst = [g for _, g in df.groupby('ind')]

lst[0]
# ind  value
#0  A      1
#2  A      3

lst[1]
# ind  value
#1  B      2
#3  B      4