pandas--数据的添加和修改

1、替换数据

使用replace方法可以实现数据的批量替换。

df.replace(1, 10)    # 将数据中的所有1替换为10
df.replace([1, 2, 3, 4], 8)    # 将1,2,3,4替换为8
df.replace([1, 2, 3, 4], [5, 6, 7, 8])    # 将1, 2, 3, 4对应替换为5, 6, 7, 8
df.replace({1: 5, 2:6})    # 字典对应修改

2、填充空值

fillna对空值填入指定数据。

df.fillna(0# 将空值全部修改为0
# {'backfill', 'bfill', 'pad', 'ffill', None},默认为None
df.fillna(method='ffill')    # 将空值都修改为其前一个值
values = {'Q1': 60, 'Q2': 70, 'Q3': 80}
df.fillna(value=values)    # 为各列填充不同的值
df.fillna(value=values, limit=1)    # 只替换第一个

3、修改索引名

df.rename(columns={'Q1': 'a', 'Q2': 'b'})    # 对表头进行修改
df.rename(index={0: 'x', 1: 'y'})    # 对索引进行修改
df.rename(index=str)    # 对类型进行修改

4、增加列

df['new'] = df['Q1'] + df['Q2']    # 新列为两列相加
# 把所有为数字的列相加
df['total'] = df.select_dtypes(include=['int']).sum(1)
df.loc[df.Q1 > 60, '成绩'] = '合格'
df.loc[df.Q1 < 60, '成绩'] = '不合格'

5、插入列df.insert()

# 在第三列的位置上插入心列total列,值为每行的总成绩
df.insert(2, 'total', df.sum(1))

6、增加行

可以使用loc[]指定索引给出所有列的值来增加一行数据。

# 新增索引为100的数据
df.loc[100] = ['tom', 'A', 83, 19, 33, 94]
df.loc[101] = {'Q1': 88, 'Q2':99}    # 指定列,无数据列值为NaN
df.loc[df.shape[0] + 1] = {'Q1': 88, 'Q2':99}     # 自动增加索引
# 批量操作,可以使用迭代
rows = [[1, 2], [3, 4], [5, 6]]
for row in rows:
	df.loc[len(df)] = row

7、追加合并

增加行数据的使用场景相对较少,一般是采用数据追加的模式。
df._append()可以追加一个新行

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df._append(df2)

pd.concat([s1, s2])可以将两个df或s连接起来

s1 = pd.Series(['a', 'b'])
s2 = pd.Series(['c', 'd'])
pd.concat([s1, s2])
pd.concat([df1, df2])
pd.concat([df1, df2], join="inner")    # 只连相同列

8、删除空值

df.dropna()    # 一行中只要有缺失值就删除
df.dropna(axis='columns')    # 列中只要有空值就删除列
df.dropna(how='all')    # 行或列全部为空才删除
df.dropna(thresh=2, axis=0)    # 不足两个非空值时删除
df.dropna(inplace=True)

9、删除

删除有两种方法,一种是使用pop()函数,使用该函数,Series会删除指定索引的数据同时返回这个被删除的值,DataFrame会删除指定列并返回这个被删除的列。以上操作实时生效。

# 删除索引为3的数据
s.pop(3)
# 删除Q1列
df.pop('Q1')
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值