python之pandas (3 改添值)

改添值

修改值

在pandas的上一篇中,我们提到了选择值,那么修改值就是在选择值的基础上直接赋值就行了。例子如下:

import pandas as pd
data = {'Name': ['Tom', 'Jane', 'Alice', 'Mike'],  
        'Age': [20, 21, 19, 18],  
        'City': ['New York', 'Paris', 'Berlin', 'London']}
dates=pd.date_range('20240812',periods=4)
df = pd.DataFrame(data,index=dates)


df.loc['20240812','Name']='le'
df.iloc[1,1]=25
df.loc[df.Age==20,'Age']=22
df.loc[df.Age>20,'Age']=pd.Series([12,23,24,21],index=dates)
print(df)
             Name  Age      City
2024-08-12     le   12  New York
2024-08-13   Jane   23     Paris
2024-08-14  Alice   19    Berlin
2024-08-15   Mike   18    London
请按任意键继续. . .

其中,在第四个赋值中,等号后边是Series类型的数据,它是一个包含四个年龄的数组,而前面符合df.Age>20的数据只有一个,但是由于Series有index,所以符合条件的Age会根据i相对应的ndex去改变其值。

处理缺失数据

有时候我们需要对收集的数据进行缺失处理,那么如何使用pandas去处理呢?如下:

import pandas as pd
import numpy as np
data = {'Name': ['Tom', 'Jane', 'Alice', 'Mike'],  
        'Age': [20, 21, 19, 18],  
        'City': ['New York', 'Paris', 'Berlin', 'London']}
dates=pd.date_range('20240812',periods=4)
df = pd.DataFrame(data,index=dates)


df.loc[:,'Female']=pd.Series([np.nan,'f','m',np.nan],index=dates)
print(df)
print(np.any(df.isnull()))#检查是否有nan值
#或df.isnull().any().any()
m=df.dropna(axis=0,how='all')#去除
print(m)
print(df.fillna(value='m'))#填充
             Name  Age      City Female
2024-08-12    Tom   20  New York    NaN
2024-08-13   Jane   21     Paris      f
2024-08-14  Alice   19    Berlin      m
2024-08-15   Mike   18    London    NaN
True
             Name  Age      City Female
2024-08-12    Tom   20  New York    NaN
2024-08-13   Jane   21     Paris      f
2024-08-14  Alice   19    Berlin      m
2024-08-15   Mike   18    London    NaN
             Name  Age      City Female
2024-08-12    Tom   20  New York      m
2024-08-13   Jane   21     Paris      f
2024-08-14  Alice   19    Berlin      m
2024-08-15   Mike   18    London      m
请按任意键继续. . .

首先我们检查一下数据中是否有nan值,利用np.any(df.isnull())                                                        如果想要去除nan所在的列或行可以使用df.dropna(),参数how有any和all两种,any表示有一个即剔除,all表示如果一行或一列全部为nan则剔除。 axis表示选择行或列。                                            如果想填充nan值则利用df.fillna(),value参数是填充的值

添加列值

添加值和修改值在语句上没有什么太大的差异,只不过添加列值时的列标签名是DataFrame中没有的。如下:

import pandas as pd
data = {'Name': ['Tom', 'Jane', 'Alice', 'Mike'],  
        'Age': [20, 21, 19, 18],  
        'City': ['New York', 'Paris', 'Berlin', 'London']}
dates=pd.date_range('20240812',periods=4)
df = pd.DataFrame(data,index=dates)


# df.loc[:,'Gender']=pd.Series(['m','f','f','m'],index=dates)
df['Gender']=pd.Series(['m','f','f','m'],index=dates)
print(df)

添加值只能使用标签索引添加,不能使用数值。换句话说,也就是添加值只能使用df.loc,不能使用df.iloc。且添加值一般都是添加一列或几列,如果想要添加几行或一行,就需要使用合并功能了。

修改列名

如果想要修改DataFrame中的某一列列名,可以这样做:

import pandas as pd
data = {'Name': ['Tom', 'Jane', 'Alice', 'Mike'],  
        'Age': [20, 21, 19, 18],  
        'City': ['New York', 'Paris', 'Berlin', 'London']}
dates=pd.date_range('20240812',periods=4)
df = pd.DataFrame(data,index=dates)
ddf=df.rename(columns={'Name':'name'})
print(ddf)

以字典的形式传给df.rename的参数columns即可实现修改列名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C.L.L

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

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

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

打赏作者

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

抵扣说明:

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

余额充值