Pandas 删除DataFrame的方法总结

墨蓝 2024-04-20 08:25 137阅读 0赞

输入数据:

  1. import pandas as pd
  2. data = {
  3. '证券名称': ['格力电器', '视觉中国', '成都银行', '中国联通', '格力电器', '视觉中国', '成都银行', '中国联通'],
  4. '摘要': ['证券买入', '证券买入', '证券买入', '证券买入', '证券卖出', '证券卖出', '证券卖出', '证券卖出'],
  5. '成交数量': [500, 1000, 1500, 2000, 500, 500, 1000, 1500],
  6. '成交金额': [-5000, -10000, -15000, -20000, 5500, 5500, 11000, 15000]
  7. }
  8. df = pd.DataFrame(data, index=['2018-2-1', '2018-2-1', '2018-2-1', '2018-2-1', '2018-2-2', '2018-2-2', '2018-2-2',
  9. '2018-2-3'])
  10. print(df)

原数据:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-1 格力电器 证券买入 500 -5000
  3. 2018-2-1 视觉中国 证券买入 1000 -10000
  4. 2018-2-1 成都银行 证券买入 1500 -15000
  5. 2018-2-1 中国联通 证券买入 2000 -20000
  6. 2018-2-2 格力电器 证券卖出 500 5500
  7. 2018-2-2 视觉中国 证券卖出 500 5500
  8. 2018-2-2 成都银行 证券卖出 1000 11000
  9. 2018-2-3 中国联通 证券卖出 1500 15000

1)删除具体列

方法:

  1. df.drop('成交数量',axis=1)

结果:

  1. 证券名称 摘要 成交金额
  2. 2018-2-1 格力电器 证券买入 -5000
  3. 2018-2-1 视觉中国 证券买入 -10000
  4. 2018-2-1 成都银行 证券买入 -15000
  5. 2018-2-1 中国联通 证券买入 -20000
  6. 2018-2-2 格力电器 证券卖出 5500
  7. 2018-2-2 视觉中国 证券卖出 5500
  8. 2018-2-2 成都银行 证券卖出 11000
  9. 2018-2-3 中国联通 证券卖出 15000

2)删除具体行

方法1(根据索引删除行):

  1. df.drop('2018-2-3')

结果:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-1 格力电器 证券买入 500 -5000
  3. 2018-2-1 视觉中国 证券买入 1000 -10000
  4. 2018-2-1 成都银行 证券买入 1500 -15000
  5. 2018-2-1 中国联通 证券买入 2000 -20000
  6. 2018-2-2 格力电器 证券卖出 500 5500
  7. 2018-2-2 视觉中国 证券卖出 500 5500
  8. 2018-2-2 成都银行 证券卖出 1000 11000

方法2(根据行数的索引删除行):

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

第0行的索引为2018-2-1,因此所有索引为2018-2-1的行都被删除。 同理,第0到第3行(2018-2-1)运行的结果都相同,第4到第6行(2018-2-2)的结果相同。

结果:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-2 格力电器 证券卖出 500 5500
  3. 2018-2-2 视觉中国 证券卖出 500 5500
  4. 2018-2-2 成都银行 证券卖出 1000 11000
  5. 2018-2-3 中国联通 证券卖出 1500 15000

3)删除特定数值的行

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

结果:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-2 成都银行 证券卖出 1000 11000
  3. 2018-2-3 中国联通 证券卖出 1500 15000

4)删除包含某些字符、文字的行

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

结果:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-1 格力电器 证券买入 500 -5000
  3. 2018-2-1 视觉中国 证券买入 1000 -10000
  4. 2018-2-1 成都银行 证券买入 1500 -15000
  5. 2018-2-2 格力电器 证券卖出 500 5500
  6. 2018-2-2 视觉中国 证券卖出 500 5500
  7. 2018-2-2 成都银行 证券卖出 1000 11000

如果相要保存含有某些字符的行,删掉~这个符号即可。

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

结果:

  1. 证券名称 摘要 成交数量 成交金额
  2. 2018-2-1 中国联通 证券买入 2000 -20000
  3. 2018-2-3 中国联通 证券卖出 1500 15000

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读