首页 > 解决方案 > 使用 numpy 初始化系列对象?

问题描述

当我从熊猫开始并试图了解如何使用给定的数组或列表创建系列时,我遇到了这一行......

如果您在 NumPy 的帮助下初始化一个系列对象,那么您只能在其中保存同质数据。

我无法理解它在说什么!我猜系列可以容纳任何 dtype,只要它在整个特定向量中都是相同的,不是吗?那么上面的行在这种情况下是什么意思呢?

这是在此语句之前编写的代码......

import numpy as np
import pandas as pd

labels = ['a','b','c']
my_data = [10,20,30]
arr = np.array(my_data)

print(pd.Series(my_data))
print('==================')
print(pd.Series(my_data,index=labels))

标签: pythonpandasnumpyseries

解决方案


In [550]: labels = ['a','b','c'] 
     ...: my_data = [10,20,30] 
     ...: arr = np.array(my_data)                                                        
In [551]: arr                                                                            
Out[551]: array([10, 20, 30])   # array with `int` dtype

In [553]: pd.Series(my_data)                                                             
Out[553]: 
0    10
1    20
2    30
dtype: int64
In [554]: pd.Series(my_data, index=labels)                                               
Out[554]: 
a    10
b    20
c    30
dtype: int64

注意dtype.

包含 int 和字符串的列表:

In [555]: alist = [10,'twenty',30]                                                       
In [556]: pd.Series(alist, index=labels)                                                 
Out[556]: 
a        10
b    twenty
c        30
dtype: object

注意 dtype 的变化

从该列表中创建数组 - 注意字符串 dtype:

In [557]: np.array(alist)                                                                
Out[557]: array(['10', 'twenty', '30'], dtype='<U21')
In [558]: pd.Series(np.array(alist), index=labels)                                       
Out[558]: 
a        10
b    twenty
c        30
dtype: object
In [559]: _.to_numpy()                                                                   
Out[559]: array(['10', 'twenty', '30'], dtype=object)

[558] 看起来与 [556] 相同,但它们10,20是不同的——一个是整数,另一个是字符串。无论好坏,pandas 显示的字符串和数字都是一样的。


推荐阅读