Pandas数据的增加、修改和删除

数据的增加、修改和删除

1
2
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
  1. 创建表格

    1
    2
    3
    4
    5
    6
    data = [[1,2,3],[3,2,1],[2,2,2]]
    columns = ['天','地','人']
    index = ['金','木','水']

    df = pd.DataFrame(data=data, columns=columns, index=index)
    df.head()
  2. 增加数据–按列添加

1
2
3
4
5
6
7
8
9
df['亓']=[3,3,3]
df.head

df.loc[:,'亓'] = [3,3,3]
df.head()

qi = [3,3,3]
df.insert(4,'精',qi)
df.head()
  1. 增加数据–按行添加数据
1
2
3
4
5
6
7
df.loc['火'] = [1,2,3,3,3]
df.head()

df_insert = pd.DataFrame({'天':[1,0],'地':[3,0],'人':[2,0],'亓':[3,0],'精':[3,0]},index=['土','无'])
df=df.append(df_insert)
# 可以反复插入相同行名
print(df)
  1. 修改数据–修改列标题

    1
    2
    3
    4
    5
    6
    7
    8
    df.columns=['天','地','人','亓','神']
    df.columns

    df.rename(columns={"亓":'气'}, inplace = True)
    df.columns

    df.rename(columns={'气':'亓','神':'精'},inplace=True)
    df.head()
  2. 修改数据–修改行标题

    1
    2
    3
    4
    5
    6
    7
    df.index=list('123456')
    print(df)

    df.rename({'1': '金', '2': '木', '3': '水', '4': '火',
    '5': '土'}, axis=0, inplace=True)
    print(df)
    df.index
  3. 修改数据

    1
    2
    3
    4
    5
    6
    # 直接使用loc/iloc定位到想要修改的数据,然后复制即可
    df.loc['6','天']=3

    df.iloc[5,4]=3
    df.loc['6',:]=df.loc['6',:] + 1
    df.values
  4. 删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
df.drop(labels=None, axis=0, index=None, columns=None,level=None, inplace=False, errors='raise')

labels: 表示行标签或者列标签;

axis: 0 代表按行删除,1 代表按列删除,默认为 0

index: 删除行。默认值为None

columns: 删除列。默认值为None

level: 针对有两级索引的数据。level=0,表示按第一级索引删除整行,默认值为None

inplace: 可选参数,确定是否替换原数组;

errors: 参数值为ignore或raise,默认值为raise,若改为ignore,则取消错误。

7.1 删除行

df.drop(index='6', axis=0, inplace=True) print(df)

7.2 删除列

df.drop(columns='精', axis=1, inplace=True) print(df)

7.3 删除特定行

1
2
3
4
5
6
7
8
9
10
11
df.drop(index=df[df['人'].isin([1])].index[0],inplace=True)

"""
解析:上面的还可以理解,
首先将"人"这一列的数据提取出来--df['人']
然后检查是否存在与后面集合中的数据--df['人'].isin([1])
如果存在则将该数据对应的行索引提取出来--df[df['人'].isin([1])].index[0]
最后就是正常的删除行数据了
"""
df.drop(index=df[df['天']<2].index[0],inplace=True)
print(df)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!