Pandas 删除DataFrame的方法总结
输入数据:
import pandas as pd
data = {
'证券名称': ['格力电器', '视觉中国', '成都银行', '中国联通', '格力电器', '视觉中国', '成都银行', '中国联通'],
'摘要': ['证券买入', '证券买入', '证券买入', '证券买入', '证券卖出', '证券卖出', '证券卖出', '证券卖出'],
'成交数量': [500, 1000, 1500, 2000, 500, 500, 1000, 1500],
'成交金额': [-5000, -10000, -15000, -20000, 5500, 5500, 11000, 15000]
}
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',
'2018-2-3'])
print(df)
原数据:
证券名称 摘要 成交数量 成交金额
2018-2-1 格力电器 证券买入 500 -5000
2018-2-1 视觉中国 证券买入 1000 -10000
2018-2-1 成都银行 证券买入 1500 -15000
2018-2-1 中国联通 证券买入 2000 -20000
2018-2-2 格力电器 证券卖出 500 5500
2018-2-2 视觉中国 证券卖出 500 5500
2018-2-2 成都银行 证券卖出 1000 11000
2018-2-3 中国联通 证券卖出 1500 15000
1)删除具体列
方法:
df.drop('成交数量',axis=1)
结果:
证券名称 摘要 成交金额
2018-2-1 格力电器 证券买入 -5000
2018-2-1 视觉中国 证券买入 -10000
2018-2-1 成都银行 证券买入 -15000
2018-2-1 中国联通 证券买入 -20000
2018-2-2 格力电器 证券卖出 5500
2018-2-2 视觉中国 证券卖出 5500
2018-2-2 成都银行 证券卖出 11000
2018-2-3 中国联通 证券卖出 15000
2)删除具体行
方法1(根据索引删除行):
df.drop('2018-2-3')
结果:
证券名称 摘要 成交数量 成交金额
2018-2-1 格力电器 证券买入 500 -5000
2018-2-1 视觉中国 证券买入 1000 -10000
2018-2-1 成都银行 证券买入 1500 -15000
2018-2-1 中国联通 证券买入 2000 -20000
2018-2-2 格力电器 证券卖出 500 5500
2018-2-2 视觉中国 证券卖出 500 5500
2018-2-2 成都银行 证券卖出 1000 11000
方法2(根据行数的索引删除行):
df.drop(df.index[0])
第0行的索引为2018-2-1,因此所有索引为2018-2-1的行都被删除。 同理,第0到第3行(2018-2-1)运行的结果都相同,第4到第6行(2018-2-2)的结果相同。
结果:
证券名称 摘要 成交数量 成交金额
2018-2-2 格力电器 证券卖出 500 5500
2018-2-2 视觉中国 证券卖出 500 5500
2018-2-2 成都银行 证券卖出 1000 11000
2018-2-3 中国联通 证券卖出 1500 15000
3)删除特定数值的行
df[df['成交金额'] > 10000]
结果:
证券名称 摘要 成交数量 成交金额
2018-2-2 成都银行 证券卖出 1000 11000
2018-2-3 中国联通 证券卖出 1500 15000
4)删除包含某些字符、文字的行
df[~ df['证券名称'].str.contains('联通')]
结果:
证券名称 摘要 成交数量 成交金额
2018-2-1 格力电器 证券买入 500 -5000
2018-2-1 视觉中国 证券买入 1000 -10000
2018-2-1 成都银行 证券买入 1500 -15000
2018-2-2 格力电器 证券卖出 500 5500
2018-2-2 视觉中国 证券卖出 500 5500
2018-2-2 成都银行 证券卖出 1000 11000
如果相要保存含有某些字符的行,删掉~这个符号即可。
df[df['证券名称'].str.contains('联通')]
结果:
证券名称 摘要 成交数量 成交金额
2018-2-1 中国联通 证券买入 2000 -20000
2018-2-3 中国联通 证券卖出 1500 15000
还没有评论,来说两句吧...