Pandas Series

创建

  • 通过列表创建

si = pd.Series([1, 2, 3, 4])
  • 通过 np.arange() 创建

si = pd.Series(np.arange(8))
  • 通过对象创建

si = pd.Series({'a': 1, 'b': 2, 'c': 3})

属性

  • 查看Series的values

si.values  # array([1, 2, 3])
  • 查看Series的index

si.index  # Index(['1', '2', '3'], dtype='object')

方法

获取元素


si = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
si['A']  # 1
si[0]  # 1

对值过滤


si = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
si[si > 1]
# B 2
# C 3

重置编号

Series默认编号为int类型的数字,我们可以重置Series的编号

  • 在创建时重置

si = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
# A    1
# B    2
# C    3
  • 通过 reindex() 方法重置

reindex() 方法接收一个新的 index 列表,用于替换原来的 index ,如果新的 index 包含原来的 index 没有的元素则新增的index元素默认填充为 NaN ,可以通过指定参数 fill_value 改变默认的值。


si = pd.Series([1, 2, 3])
si.reindex(index=['A', 'B', 'C', 'D', 'E'])
# A    NaN
# B    NaN
# C    NaN
# D    NaN
# E    NaN
# dtype: float64

s1 = pd.Series([1, 2, 3])
s1.reindex(index=['A', 2, 'C', 'D', 'E'], fill_value=0)
# A    0
# B    3
# C    0
# D    0
# E    0
# dtype: int64

内插或填充 method


obj1=pd.Series(range(3), index=['a', 'c', 'e'])
print(obj1.reindex(['a', 'b', 'c', 'd', 'e'], method='pad'))
# a    0
# b    0
# c    1
# d    1
# e    2
# dtype: int64

ffillpad: 前向(或进位)填充
bfillbackfill : 后向(或进位)填充

转换为字典

Series可以通过 to_dict() 转换为一个Python字典:


si = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
si.to_dict()

NaN

判断NaN

判断NaN,Series判断NaN有两个方法 isna()notna()

  • isna() 会对Series的每个元素的值进行判断,如果是NaN则为 True,否则为False
  • notna()会对Series的每个元素的值进行判断,如果是NaN则为 False,否则为True

si = pd.Series([1, 2, 3, np.nan], index=['A', 'B', 'C', 'D'])
si.isna()
# A    False
# B    False
# C    False
# D     True
# dtype: bool

删除NaN


si.dropna()

填充NaN项


si.fillna(value)

来源:https://segmentfault.com/a/1190000017310024

posted @ 2018-12-22 12:32  栖息地  阅读(147)  评论(0编辑  收藏  举报