常见操作

1 删除列

1.1 用对象的drop方法

# 注:必须指定axis参数=1,可以用labels或者columns或者都不用。
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))
# method1 和method2 和method3和method4 和method5 和method6的写法效果一致。
df.drop(["A"], axis = 1)                  #method1
df.drop(labels=["A"], axis = 1)           #method2
df.drop(labels="A", axis = 1)             #method3
df.drop(columns="A")                      #method4
df.drop(columns=["A"])                    #method5
df.drop(columns=["A"], axis = 1)          #method6
# 注:如果用labels,必须指定axis=1(删除列),如果用columns,则不必指定axis=1,因为columns时,axis为1
# 如果删除多列,就只能用method1和method2
df.drop(["A", "B"], axis = 1)                  #method1
df.drop(labels=["A", "B"], axis = 1)           #method2
# 如果指定的列不存在,则报错  KeyError: "['具体指定列'] not found in axis"
# 如果就地修改,可以指定inplace=True
创建数据

image.png

删除多列

inplace=True,默认为False

1.2 用python内建的del

# 会就地修改原数据且一次只能删除一列
del df["A"]  
image.png

2 增加列

2.1 通过位置([] or loc)<原地修改>

df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))        
df["E"] = 1.0                                                        
df.loc[:,"F"] = np.nan                                               
df                                                                   
image.png

2.2 通过对象的insert方法 <原地修改>

第一参数的值的范围为:[0,df.shape[1]],包括列的最大索引+1

# 在第一列添加名为“E”的一列,且其值可以为:全是0或None或np.nan的值,或是list-like,或是某些列的运算结果
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))
df.insert(0,"E",0)                  #值全为0
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))         
df.insert(0,"E",None)               #值全为None                                    
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))  
df.insert(0,"E",np.nan)             #值全为NaN     
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD")) 
df.insert(0,"E",df.A + df.B)        #值为A和B列的和     
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))
df.insert(0,"E",df["A"] + df["B"])  #值为A列和B列的和 
#第一参数的值的范围为:[0,df.shape[1]],包括列的最大索引+1
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))   
df.insert(4,"E",df["A"] + df["B"])     
#          A         B         C         D         E
#0 -2.162230  1.405092 -0.467515 -0.795393 -0.757138
#1  0.400447  0.397316  0.094859 -0.320334  0.797763
#2  1.113476  0.841143 -1.825015  1.086205  1.954619
#3 -1.152093 -0.948018 -0.232126 -0.814098 -2.100112
#4  0.452588 -1.228917 -0.795181 -0.723586 -0.776329
#5  0.153220  1.956513 -0.387545 -0.525249  2.109733

2.3 pd.concat <不会原地修改>

#推荐用axis=1
pd.concat([df, pd.DataFrame(columns = list("DFE"))], sort =False)                  # method1
pd.concat([df, pd.DataFrame(columns = list("DFE"))], axis = 0, sort =False)        # mehod2
# method1 and method2 结果一致,如果sort=True,则对列名进行排序,变成ABCDEF
# 如果添加的列,已经存在,则不再重复添加(axis=0)。
          A         B         C         D    F    E
0 -0.162737  0.102415  0.516459  0.505589  NaN  NaN
1  1.064120  0.744812  1.760359 -0.604785  NaN  NaN
2  1.786787 -1.123441 -2.451674  1.125258  NaN  NaN
3 -1.637454 -0.193606  2.038299 -0.116104  NaN  NaN
4  0.090663  0.793978  1.206064 -1.026067  NaN  NaN
5  0.908653 -1.931487 -1.068116  2.164030  NaN  NaN
pd.concat([df, pd.DataFrame(columns = list("DFE"))], axis = 1, sort =False)
#如果添加的列,已经存在,则会再重复添加(axis=1)
          A         B         C         D    D    F    E
0 -0.162737  0.102415  0.516459  0.505589  NaN  NaN  NaN
1  1.064120  0.744812  1.760359 -0.604785  NaN  NaN  NaN
2  1.786787 -1.123441 -2.451674  1.125258  NaN  NaN  NaN
3 -1.637454 -0.193606  2.038299 -0.116104  NaN  NaN  NaN
4  0.090663  0.793978  1.206064 -1.026067  NaN  NaN  NaN
5  0.908653 -1.931487 -1.068116  2.164030  NaN  NaN  NaN

2.4 对象的reindex方法<不会原地修改,如原地修改,需设置inplace=True>

df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))
df.reindex(columns = list("ABCDEFG"))          #method1
df.reindex(labels = list("ABCDEFG"), axis = 1) #method2
#method1 and method2结果一致
#修改默认添加值:fill_value参数
df.reindex(labels = list("ABCDEFG"), axis = 1, fill_value=21)
          A         B         C         D   E   F   G
0  0.946368  1.168997  2.511798  0.661356  21  21  21
1 -0.666867 -0.110801 -0.455017 -0.417373  21  21  21
2  0.566638 -1.092429  1.136306  0.092472  21  21  21
3  0.605805 -0.697731 -0.001785 -0.916009  21  21  21
4 -0.715701  0.752973  0.006688 -0.948602  21  21  21
5 -0.818942  2.388051  0.679956  1.035658  21  21  21
# 修改列的顺序
df.reindex(labels = list("AEFGBCD"), axis = 1, fill_value=None)
          A   E   F   G         B         C         D
0  0.946368 NaN NaN NaN  1.168997  2.511798  0.661356
1 -0.666867 NaN NaN NaN -0.110801 -0.455017 -0.417373
2  0.566638 NaN NaN NaN -1.092429  1.136306  0.092472
3  0.605805 NaN NaN NaN -0.697731 -0.001785 -0.916009
4 -0.715701 NaN NaN NaN  0.752973  0.006688 -0.948602
5 -0.818942 NaN NaN NaN  2.388051  0.679956  1.035658

3增加行

3.1 通过位置增加(loc and at)<原地修改>

# 添加的值的形状(长度)和df对象的列的长度一致。
df = pd.DataFrame(np.random.randn(6,4), columns=list("ABCD"))
df.loc["5"] = [1,2,3,4]  # 索引"5"在df对象中不存在
df.loc[5] = [1,2,3,3]    # 索引5在对象df中存在

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容