一末荐、更改DataFrame的某些值
1侧纯、更改DataFrame中的數(shù)據(jù),原理是將這部分?jǐn)?shù)據(jù)提取出來(lái)甲脏,重新賦值為新的數(shù)據(jù)眶熬。
2妹笆、需要注意的是,數(shù)據(jù)更改直接針對(duì)DataFrame原數(shù)據(jù)更改娜氏,操作無(wú)法撤銷拳缠,如果做出更改,需要對(duì)更改條件做確認(rèn)或?qū)?shù)據(jù)進(jìn)行備份贸弥。
代碼:
import pandas as pd
df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
print("--------更換單個(gè)值----------")
# loc和iloc 可以更換單行窟坐、單列、多行绵疲、多列的值
df1.loc[0,'age']=25 # 思路:先用loc找到要更改的值哲鸳,再用賦值(=)的方法實(shí)現(xiàn)更換值
df1.iloc[0,2]=25 # iloc:用索引位置來(lái)查找
# at 、iat只能更換單個(gè)值
df1.at[0,'age']=25 # iat 用來(lái)取某個(gè)單值,參數(shù)只能用數(shù)字索引
df1.iat[0,2]=25 # at 用來(lái)取某個(gè)單值,參數(shù)只能用index和columns索引名稱
print(df1)
結(jié)果圖:
二盔憨、插入新增列帕胆、行
代碼:
import pandas as pd
df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
print("----------在最后新增一列---------------")
print("-------案例1----------")
# 在數(shù)據(jù)框最后加上score一列,元素值分別為:80般渡,98,67芙盘,90
df1['score']=[80,98,67,90] # 增加列的元素個(gè)數(shù)要跟原數(shù)據(jù)列的個(gè)數(shù)一樣
print(df1)
print("-------案例2----------")
print("---------在指定位置新增列:用insert()--------")
# 在gender后面加一列城市
# 在具體某個(gè)位置插入一列可以用insert的方法
# 語(yǔ)法格式:列表.insert(index, obj)
# index --->對(duì)象 obj 需要插入的索引位置驯用。
# obj ---> 要插入列表中的對(duì)象(列名)
col_name=df1.columns.tolist() # 將數(shù)據(jù)框的列名全部提取出來(lái)存放在列表里
print(col_name)
col_name.insert(2,'city') # 在列索引為2的位置插入一列,列名為:city,剛插入時(shí)不會(huì)有值儒老,整列都是NaN
df1=df1.reindex(columns=col_name) # DataFrame.reindex() 對(duì)原行/列索引重新構(gòu)建索引值
df1['city']=['北京','山西','湖北','澳門'] # 給city列賦值
print(df1)
print("----------新增行---------------")
# 重要:恰!先創(chuàng)建一個(gè)DataFrame驮樊,用來(lái)增加進(jìn)數(shù)據(jù)框的最后一行
new=pd.DataFrame({'name':'lisa',
'gender':'F',
'city':'北京',
'age':19,
'score':100},
index=[1]) # 自定義索引為:1 薇正,這里也可以不設(shè)置index
print(new)
print("-------在原數(shù)據(jù)框df1最后一行新增一行,用append方法------------")
df1=df1.append(new,ignore_index=True) # ignore_index=True,表示不按原來(lái)的索引囚衔,從0開(kāi)始自動(dòng)遞增
print(df1)
結(jié)果圖:
參考資料:
https://www.jb51.net/article/163904.htm