创建df:
> df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list('1234')) > df A B C D 1 0 1 2 3 2 4 5 6 7 3 8 9 10 11 4 12 13 14 15
1,删除行
1.1,drop
通过行名称删除:
df = df.drop(['1', '2']) # 不指定axis默认为0 df.drop(['1', '3'], inplace=True)
通过行号删除:
df.drop(df.index[0], inplace=True) # 删除第1行 df.drop(df.index[0:3], inplace=True) # 删除前3行 df.drop(df.index[[0, 2]], inplace=True) # 删除第1第3行
1.2,通过各种筛选方法实现删除行
详见pandas“选择行单元格,选择行列“的笔记
举例,通过筛选可以实现很多功能,例如要对某行数据去重,可以获取去重后的index列表后,使用loc方法:
> df.loc['2','B']=9 > df A B C D 1 0 1 2 3 2 4 9 6 7 3 8 9 10 11 4 12 13 14 15 > chooses = df['B'].drop_duplicates().index > df.loc[chooses] A B C D 1 0 1 2 3 2 4 9 6 7 4 12 13 14 15
2,删除列
2.1,del
del df['A'] # 删除A列,会就地修改
2.2,drop
通过列名称删除:
df = df.drop(['B', 'C'], axis=1) # drop不会就地修改,创建副本返回 df.drop(['B', 'C'], axis=1, inplace=True) # inplace=True会就地修改
使用列数删除,传入参数是int,列表,者切片:
df.drop(df.columns[0], axis=1, inplace=True) # 删除第1列 df.drop(df.columns[0:3], axis=1, inplace=True) # 删除前3列 df.drop(df.columns[[0, 2]], axis=1, inplace=True) # 删除第1第3列
2.3,通过各种筛选方法实现删除列
详见pandas“选择行单元格,选择行列“的笔记
3,增加行
3.1,loc,at,set_value
想增加一行,行名称为‘5',内容为[16, 17, 18, 19]
df.loc['5'] = [16, 17, 18, 19] # 后面的序列是Iterable就行 df.at['5'] = [16, 17, 18, 19] df.set_value('5', df.columns, [16, 17, 18, 19], takeable=False) # warning,set_value会被取消
3.2,append
添加有name的Series:
s = pd.Series([16, 17, 18, 19], index=df.columns, name='5') df = df.append(s)
添加没有name的Series,必须ignore_index:
s = pd.Series([16, 17, 18, 19], index=df.columns) df = df.append(s, ignore_index=True)
可以 append字典列表,同样需要必须ignore_index:
ls = [{'A': 16, 'B': 17, 'C': 18, 'D': 19}, {'A': 20, 'B': 21, 'C': 22, 'D': 23}] df = df.append(ls, ignore_index=True)
3.3,逐行增加
简单的逐行添加内容,可以:
df.loc[len(df)] = [16, 17, 18, 19]
但需要注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该行数据,而不会新增
3.4,插入行
增加行没找到类似insert这种可以插入的方法,暂时替代方法可以先reindex,再赋值:
df = df.reindex(index=df.index.insert(2, '5')) df.loc['5'] = [16, 17, 18, 19]
4,df增加列
一般涉及到增加列项时,经常会对现有的数据进行遍历运算,获得新增列项的值,所以这里结合对DataFrame的遍历讨论增加列。
例如,想增加一列'E',值等于'A'和'C'列对应值之和。
4.1,遍历DataFrame获取序列的方法
s = [a + c for a, c in zip(df['A'], df['C'])] # 通过遍历获取序列 s = [row['A'] + row['C'] for i, row in df.iterrows()] # 通过iterrows()获取序列,s为list s = df.apply(lambda row: row['A'] + row['C'], axis=1) # 通过apply获取序列,s为Series s = df['A'] + df['C'] # 通过Series矢量相加获取序列 s = df['A'].values + df['C'].values # 通过Numpy矢量相加获取序列
4.2,[ ],loc
通过df[]或者df.loc添加序列
df.loc[:, 'E'] = s df['E'] = s
4.3,Insert
可以指定插入位置,和插入列名称
df.insert(0, 'E', s)
4.4,concat
s = pd.Series([16, 17, 18, 19], name='E', index=df.index) df = pd.concat([df, s], axis=1)
4.5,iloc和loc遍历过程中给列赋值
效率比较低
df['E']是DataFrame的一个Series,是引用,对其修改也能改变DataFrame,但运行时报了Warning
df['E'] = None # 需事先创建e列,否则iloc遍历会报错,loc遍历无需事先创建 for i in range(len(df)): df['E'].iloc[i] = df['A'].iloc[i] + df['C'].iloc[i] # SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
不用Series不会报Warning:
df['E'] = None col_no = [i for i in df.columns].index('E') for i in range(len(df)): df.iloc[i, col_no] = df['A'].iloc[i] + df['C'].iloc[i]
用loc无需先给E列赋空值:
for i in df.index: df.loc[i, 'E'] = df.loc[i, 'A'] + df.loc[i, 'C']
4.6,逐列增加
简单的逐列添加内容,可以:
df[len(df)] = [16, 17, 18, 19]
但需要注意:len(df)生成的是int,如果生成的int,df已经存在了,会覆盖该列数据,而不会新增
4.7,其他方法
增加3列,EFG,value默认为np.NaN
df = pd.concat([df, pd.DataFrame(columns=list('EFG'))]) # 列的次序无法指定,并且fillna时会对整个df做出调整 df = df.reindex(columns=list('ABCDEFG'), fill_value=0) # 列的次序按照list指定,并且fill_value只对新增列做出调整,推荐!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】
- 谭咏麟.2022-倾·听【环球】【WAV+CUE】
- 4complete《丛生》[320K/MP3][85.26MB]
- 4complete《丛生》[FLAC/分轨][218.01MB]