我有一个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
有没有熊猫功能可以做到这一点?或者我必须编写自己的循环函数来创建两个数据框?非常感谢!
答案 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。