增加行
在机器学习实验中和 for 循环中,经常需要重复对同一个dataframe 对象中增加行。观察下述示例:`
import numpy as np
import pandas as pd
uu=np.random.randn(2,4)
uu = pd.DataFrame(uu,columns=('A','B','C','D'))
print(uu)
执行结果如下:
A B C D
0 -1.134756 0.813057 0.507945 0.003945
1 0.960421 0.646768 1.491001 -0.251167
假如我们想要把:
dd = np.random.randn(1,4)
dd = pd.DataFrame(dd)
print(dd)
即:
0 1 2 3
0 0.584214 -1.092008 0.146267 1.53093
与之合并,使用常见语句后:
cc=uu.append(dd,ignore_index= True)
print(cc)
注意:
- ignore_index 的值应该为 True ,这样会执行index 对象的重排 。 否则保留原来的index.
- 合并的两个对象列数应该相等。 对values 对象的行列修改可以使用 reshape函数。reshape(1,-1) 代表将数据合并成一行,reshape(-1,1) 代表将数据合并成一列。
- 合并的两个对象应该为dataframe 或者是Series ,不能是 numpy对象或者其他。
合并后的结果为:
A B C D 0 1 2 3
0 0.454534 0.905429 -0.221664 -0.270886 NaN NaN NaN NaN
1 -1.138850 -0.199603 -1.176881 -0.205342 NaN NaN NaN NaN
2 NaN NaN NaN NaN 0.9215 -0.642538 -0.172892 -0.038865
这显然不是我们想要的!
更改的方法为,将新的增加得行对象赋予列名,且必须是和想要合并的对象相同的列名。更改语句
dd = pd.DataFrame(dd) #为
dd = pd.DataFrame(dd,columns=('A','B','C','D'))
更改后的结果为:
A B C D
0 -0.129192 1.959532 -0.527883 -1.110212
1 -0.010936 1.159395 1.581872 -1.070567
2 1.403309 -0.755311 1.112327 0.701520
修改值
- 不能对切片进行修改和赋值,这样做一般会报错!
- 对 dataframe 对象值的修改,应该使用.loc 或者 .iloc 或者。ix 指定位置修改。