· 批量删除

  1. # 传入这个参数后将只丢弃全为缺失值的那些行
  2. data.dropna(how = 'all')
  3. # 传入这个参数后将只丢弃全为缺失值的那些行
  4. df.dropna()
  5. # 丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
  6. data.dropna(axis=1)
  7. # 丢弃行全为缺失值的那些列
  8. data.dropna(axis=1,how="all")
  9. # 删除列全为NaN的row
  10. df.dropna(how='all')
  11. # 删除表中含有任何NaN的列
  12. df.dropna(axis=1, how='any')
  13. # 删除表中含有任何NaN的行
  14. df.dropna(axis=0, how='any')
  15. # 丢弃‘Age’和‘Sex’这两列中有缺失值的行
  16. data.dropna(axis=0,subset = ["Age", "Sex"])

· 删除具体列

  1. df.drop('成交数量',axis=1)
  2. df1 = df.drop(['a'], axis = 1) # 不会直接在原数据上更改
  3. del df['a'] # 会直接在原数据上更改

· 删除具体行

  1. df.drop('2018-2-3')
  2. df = Df.drop([1], axis=0)

· 删除特定数值的行(删除成交金额小于10000)

  1. df[ df['成交金额'] > 10000]

· 删除某列以特定字符/字符串开头的行

  1. import pandas as pd
  2. df = pd.read_csv('data.csv')
  3. # 删除collectionName列以元宇宙开头的记录
  4. df = df[~df['collectionName'].astype(str).str.startswith('元宇宙')]

· 删除某列包含特殊字符的行

  1. df[ ~ df['证券名称'].str.contains('联通') ]

· 如果想取包含某些字符的记录,去掉~即可

  1. df[ df['证券名称'].str.contains('联通') ]

· 根据行号删除记录

比如删除第三行:

  1. df.drop(df.index[3])

这个办法其实不是按照行号删除,而是按照索引删除。如果index为3,则会将前4条记录都删除。这个方法支持一个范围,以及用负数表示从末尾删除。

· 预设index的情况下删除特定index的数据

image.png

image.png

无预设index的情况下删除指定行的数据
image.png
image.png

· 指定列存在空值所对应的行全部删除

  1. data = pd.DataFrame({'a': [1, 2, 4, np.nan,7, 9],
  2. 'b': ['a', 'b', np.nan, np.nan, 'd', 'e'],
  3. 'c': [np.nan, 0, 4, np.nan, np.nan, 5],
  4. 'd': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})
  5. # 指定列存在空值所对应的行全部删除
  6. data.dropna(axis=0,how='all',subset = ["a"])

image.png