是否有一个函数可以通过特定的列值将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中使用子集。但有功能吗?感谢。
答案 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