简体   繁体   English

python按列拆分pd数据帧

[英]python split pd dataframe by column

Is there a function that splits a pandas.dataframe object into multiple sub-dataframes, by a specific column value? 是否有一个函数可以通过特定的列值将pandas.dataframe对象拆分为多个子数据帧? For example, if I have 例如,如果我有

A   1
B   2
A   3
B   4

I want the result as follow: 我希望结果如下:

A   1
A   3

and

B   2
B   4

In R, it is the split function. 在R中,它是分裂函数。 How is it being done in python? 怎么在python中完成? I know I can use subset within a forloop. 我知道我可以在forloop中使用子集。 But is there a function does that? 但有功能吗? Thanks. 谢谢。

You can use groupby() with list-comprehension to extract a list of sub data frames where each of them contains only a single ind value: 您可以使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM