3.Pandas赋值及数据操作

0 引言

Pandas处理表格的数据时,有时候需要对某一行或者某一列的一个值需要赋值,有时候也需要其他的数据操作,比如删除,更改等操作。

1 Pandas赋值

import pandas as pd
import numpy as np

生成DataFrame表格数据

dates = np.arange(20200101,20200107)
df1 = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
df1
ABCD
202001010123
202001024567
20200103891011
2020010412131415
2020010516171819
2020010620212223
df1.iloc[2,2]
10

对具体位置重新赋值

df1.iloc[2,2] = 100
df1
ABCD
202001010123
202001024567
202001038910011
2020010412131415
2020010516171819
2020010620212223

通过标签和表头来重新赋值

df1.loc[20200102,'B'] = 200
df1
ABCD
202001010123
20200102420067
202001038910011
2020010412131415
2020010516171819
2020010620212223

先判断某行某列满足某个条件,然后赋值

df1[df1.A > 10] = 0
df1
ABCD
202001010123
20200102420067
202001038910011
202001040000
202001050000
202001060000
df1.A[df1.A == 0] = 1
df1
ABCD
202001011123
20200102420067
202001038910011
202001041000
202001051000
202001061000

2 Pandas数据操作

添加指定列

df1['E'] = 10 # 添加一列
df1
ABCDE
20200101112310
2020010242006710
20200103891001110
20200104100010
20200105100010
20200106100010

调用Series添加指定列

df1['F'] = pd.Series([1,2,3,4,5,6],index=dates)
df1
ABCDEF
202001011123101
20200102420067102
202001038910011103
202001041000104
202001051000105
202001061000106

对某行某列的值进行修改

df1.loc[20200107,['A','B','C']] = [1,2,3]
df1
ABCDEF
202001011.01.02.03.010.01.0
202001024.0200.06.07.010.02.0
202001038.09.0100.011.010.03.0
202001041.00.00.00.010.04.0
202001051.00.00.00.010.05.0
202001061.00.00.00.010.06.0
202001071.02.03.0NaNNaNNaN

调用 .append 函数来实现添加指定行

s1 = pd.Series([1,2,3,4,5,6],index=['A','B','C','D','E','F'])
s1.name = 'S1'
df2 = df1.append(s1)
df2
ABCDEF
202001011.01.02.03.010.01.0
202001024.0200.06.07.010.02.0
202001038.09.0100.011.010.03.0
202001041.00.00.00.010.04.0
202001051.00.00.00.010.05.0
202001061.00.00.00.010.06.0
202001071.02.03.0NaNNaNNaN
S11.02.03.04.05.06.0

调用 .insert 在具体位置插入列

df1.insert(1,'G',df2['E']) # 在第一列插入索引为G的df2中的E列
df1
AGBCDEF
202001011.010.01.02.03.010.01.0
202001024.010.0200.06.07.010.02.0
202001038.010.09.0100.011.010.03.0
202001041.010.00.00.00.010.04.0
202001051.010.00.00.00.010.05.0
202001061.010.00.00.00.010.06.0
202001071.0NaN2.03.0NaNNaNNaN

调用 .pop 弹出某列,并调用 .insert 插入某列

g = df1.pop('G') # 弹出G列
df1.insert(6,'G',g) # 在最后插入
df1
ABCDEFG
202001011.01.02.03.010.01.010.0
202001024.0200.06.07.010.02.010.0
202001038.09.0100.011.010.03.010.0
202001041.00.00.00.010.04.010.0
202001051.00.00.00.010.05.010.0
202001061.00.00.00.010.06.010.0
202001071.02.03.0NaNNaNNaNNaN

调用 del 删除某列

del df1['G'] # 删除G列
df1
ABCDEF
202001011.01.02.03.010.01.0
202001024.0200.06.07.010.02.0
202001038.09.0100.011.010.03.0
202001041.00.00.00.010.04.0
202001051.00.00.00.010.05.0
202001061.00.00.00.010.06.0
202001071.02.03.0NaNNaNNaN

调用 .drop 删除指定列

df2 = df1.drop(['A','B'],axis=1) # 删除AB列
df2
CDEF
202001012.03.010.01.0
202001026.07.010.02.0
20200103100.011.010.03.0
202001040.00.010.04.0
202001050.00.010.05.0
202001060.00.010.06.0
202001073.0NaNNaNNaN

调用 .drop 删除某行

df2 = df1.drop([20200101,20200102],axis=0) #删除行
df2
ABCDEF
202001038.09.0100.011.010.03.0
202001041.00.00.00.010.04.0
202001051.00.00.00.010.05.0
202001061.00.00.00.010.06.0
202001071.02.03.0NaNNaNNaN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZPILOTE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值