呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客
还是可以先预习下前面的知识点耶:
pandas基础知识(1)
pandas基础知识(2)
pandas基础知识(3)
#这篇开始介绍如何对DataFrame设置值,更改值#
(1)仍然利用到loc
与iloc
函数(前一篇有讲解:pandas基础知识(3)),具体做法看例子
import pandas as pd
import numpy as np
dates=pd.date_range('20130101',periods=6) #生成时间序列
df=pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
print(df)
df.iloc[1,1]=100 #涉及iloc函数
print(df)
df.loc['20130101','A']=200 #涉及loc函数
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #原DataFrame
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 100 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #更改第1行第1列的值
A B C D
2013-01-01 200 1 2 3
2013-01-02 4 100 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #根据索引值更改值
(2)根据某一列条件更改对应的数据(例子中条件是A<8
)
①根据条件更改所有列
对应的数据
print(df) #原来的DataFrame
df[df.A<8]=0 #符合A<8条件的所有列数据都改为0
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #原DataFrame
A B C D
2013-01-01 0 0 0 0
2013-01-02 0 0 0 0
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #其他列也全都更改了,变为0
②只改变A列
print(df)
df.A[df.A<8]=0
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #原DataFrame
A B C D
2013-01-01 0 1 2 3
2013-01-02 0 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #只改变A列
③只改变B列
print(df)
df.B[df.A<8]=0
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #原DataFrame
A B C D
2013-01-01 0 0 2 3
2013-01-02 4 0 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #只改变B列
(3)结合Series
(不懂的看基础(1))添加列,要满足其索引跟原DataFrame一样才能添加进去;利用np.nan添加nan列
。
print(df)
df['E']=pd.Series([1,2,3,4,5,6],index=pd.date_range('20130101',periods=6)) #添加了E这一列
print(df)
df['F']=np.nan #添加了F这一列
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23 #原DataFrame
A B C D E
2013-01-01 0 1 2 3 1
2013-01-02 4 5 6 7 2
2013-01-03 8 9 10 11 3
2013-01-04 12 13 14 15 4
2013-01-05 16 17 18 19 5
2013-01-06 20 21 22 23 6 #多了E列
A B C D E F
2013-01-01 0 1 2 3 1 NaN
2013-01-02 4 5 6 7 2 NaN
2013-01-03 8 9 10 11 3 NaN
2013-01-04 12 13 14 15 4 NaN
2013-01-05 16 17 18 19 5 NaN
2013-01-06 20 21 22 23 6 NaN #多了F列
(4)删除DataFrame中的列,可以类似字典那样用del
方法
print(df)
del df['A']
print(df)
运行结果:
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23
B C D
2013-01-01 1 2 3
2013-01-02 5 6 7
2013-01-03 9 10 11
2013-01-04 13 14 15
2013-01-05 17 18 19
2013-01-06 21 22 23 #A列被删除了
好啦~记得点赞,关注我哟