0
我可以改变数据框最初的第一个条目:np.array的astype是否会阻止DataFrame中的将来编辑?
In [6]: df = pd.DataFrame(np.random.rand(5,2))
In [7]: df
Out[7]:
0 1
0 0.514592 0.459589
1 0.329704 0.409099
2 0.061246 0.966191
3 0.336747 0.908513
4 0.169220 0.468437
In [8]: df.ix[0][0] = 1
In [9]: df
Out[9]:
0 1
0 1.000000 0.459589
1 0.329704 0.409099
2 0.061246 0.966191
3 0.336747 0.908513
4 0.169220 0.468437
但我这样做后:
In [10]: df[0] = np.floor(df.index/10).astype(int) * 10
In [11]: df
Out[11]:
0 1
0 0 0.459589
1 0 0.409099
2 0 0.966191
3 0 0.908513
4 0 0.468437
我不能找到一种方法来改变它。
In [12]: df.ix[0][0] = 1
In [13]: df
Out[13]:
0 1
0 0 0.459589
1 0 0.409099
2 0 0.966191
3 0 0.908513
4 0 0.468437
而且我甚至无法从其他列
In [16]: df.ix[0][1] = 1
In [17]: df
Out[17]:
0 1
0 0 0.459589
1 0 0.409099
2 0 0.966191
3 0 0.908513
4 0 0.468437
怎么了这种变化的元素?
有趣,所以是'.ix'改变它的唯一途径?你知道为什么用'[colname]'分开访问列只能提供一个副本吗? – beardc 2013-03-22 02:43:18
''[]''对DataFrame中的行进行切片,请参阅http://pandas.pydata.org/pandas-docs/dev/indexing.html#basics,该名称访问是一种便利功能,它返回底层系列作为副本,请参阅http://pandas.pydata.org/pandas-docs/dev/basics.html#copying – Jeff 2013-03-22 13:40:02
但是,为什么在'astype'赋值之前,colname访问会使用输入8和10更改'df',if colname访问只返回一个副本,但之后不会更改'df'(输入12和16)? – beardc 2013-03-22 15:14:28