紧接着上一篇博客,创建了Series跟DataFrame
今天学习DataFrame的行列添加和删除操作,以及append和切片操作
下面看代码:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# Series
s = Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
print(s)
# >>>
# a 1
# b 2
# c 3
# d 4
# dtype: int64
print(s['a'])
# >>>1
# DataFrame
d = DataFrame([[1, 2, 3], [4, 5, 6]], index=['a', 'b'], columns=['q', 'w', 'e'])
print(d)
# >>>
# q w e
# a 1 2 3
# b 4 5 6
# 字典创建Dataframe
data = {
'name': ['小红', '小绿', '小蓝'],
'birth': [2001, 1999, 2001],
'height': [188, 178, 189]
}
df = DataFrame(data)
print(df)
# >>>
# name birth height
# 0 小红 2001 188
# 1 小绿 1999 178
# 2 小蓝 2001 189
# 你也可以指定行引索
# 只需要加上
df = DataFrame(data, index=['p1', 'p2', 'p3'])
print(df)
# >>>
# name birth height
# p1 小红 2001 188
# p2 小绿 1999 178
# p3 小蓝 2001 189
# 关于选取DataFrame的行和列
print(df['name'])
# >>>
# p1 小红
# p2 小绿
# p3 小蓝
# Name: name, dtype: object
print(df.loc['p1'])
# >>>
# name 小红
# birth 2001
# height 188
# Name: p1, dtype: object
# 关于切片操作
print(df['p1':'p2'])
# >>>
# name birth height
# p1 小红 2001 188
# p2 小绿 1999 178
'''切记:列不能进行切片操作'''
# df = df['name':'birth'] # wrong!
# print(df)
# 关于布尔选择
print(df[df['name'] == '小蓝'])
# >>>
# name birth height
# p3 小蓝 2001 189
# 增加一行
nr = {
'name': '小白',
'birth': '2002',
'height': '199',
'sex': 'male'
}
df = df.append(nr, ignore_index=True)
print(df)
# name birth height sex
# 0 小红 2001 188 NaN
# 1 小绿 1999 178 NaN
# 2 小蓝 2001 189 NaN
# 3 小白 2002 199 male
df = df.append(nr, ignore_index=True) # 注意这里True跟False的区别
print(df)
# name birth height sex
# 0 小红 2001 188 NaN
# 1 小绿 1999 178 NaN
# 2 小蓝 2001 189 NaN
# 3 小白 2002 199 male
# 4 小白 2002 199 male
'''如果这里是False的话,第二次运行df = df.append(nr, ignore_index=False)会出错
因为idex不能append已经存在的'''
# 删除操作
# 删除行
print(df.drop(1, axis=0))
# name birth height sex
# 0 小红 2001 188 NaN
# 2 小蓝 2001 189 NaN
# 3 小白 2002 199 male
# 4 小白 2002 199 male
# axis=0, 表示删除行
print(df.drop('name', axis=1))
# birth height sex
# 0 2001 188 NaN
# 1 1999 178 NaN
# 2 2001 189 NaN
# 3 2002 199 male
# 4 2002 199 male
# axis=1, 表示删除列