python pandas:根据列值拆分数据框

时间:2016-03-24 03:11:03

标签: python numpy pandas

我有一个csv文件,当我读入pandas数据框时,它看起来像:

data = pd.read_csv('test1.csv')
print(data)

输出如下:

   v1  v2  v3  result
0  12  31  31       0
1  34  52   4       1
2  32   4   5       1
3   7  89   2       0

有没有办法根据结果列中的值拆分数据框。即。如果结果= 0,则转到新数据框data_0:

   v1  v2  v3  result
0  12  31  31       0
1   7  89   2       0

如果result = 1,请转到数据框data_1

   v1  v2  v3  result
0  34  52   4       1
1  32   4   5       1

有没有熊猫功能可以做到这一点?或者我必须编写自己的循环函数来创建两个数据框?非常感谢!

3 个答案:

答案 0 :(得分:3)

Pandas允许您以非常直接的方式切片和操作数据。您也可以使用密钥而不是属性名称访问Yakym。

data_0 = data[data['result'] == 0]
data_1 = data[data['result'] == 1]

您甚至可以通过直接操作行数据来添加结果列,例如:

data['v_sum'] = data[v1] + data[v2] + data[v3]

答案 1 :(得分:1)

如果DataFrames列有许多不同的值,您可以尝试result print data v1 v2 v3 result 0 12 31 31 0 1 34 52 4 1 2 32 4 5 1 3 7 89 2 0 datas = {} for i, g in data.groupby('result'): #print 'data_' + str(i) #print g datas.update({'data_' + str(i) : g.reset_index(drop=True)}) print datas['data_0'] v1 v2 v3 result 0 12 31 31 0 1 7 89 2 0 print datas['data_1'] v1 v2 v3 result 0 34 52 4 1 1 32 4 5 1 {}创建<w:lastRenderedPageBreak>

w:document/w:body

答案 2 :(得分:0)

p = plot([1,2,3,4], [0.5,0.6,0.9,0.85],'-');
set(p,'XTick',1:1:4);

查看this