python数据分析-pandas模块基础知识(4)

呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客

还是可以先预习下前面的知识点耶:
pandas基础知识(1)
pandas基础知识(2)
pandas基础知识(3)
#这篇开始介绍如何对DataFrame设置值,更改值#

(1)仍然利用到lociloc函数(前一篇有讲解: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列被删除了

好啦~记得点赞,关注我哟

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值