python - 将数组附加为 pandas 列

标签 python pandas

我正在尝试创建一个包含单列 numpy 数值数组的 pandas 数据框。

我尝试使用:

pd.DataFrame(np.ndarray([1 , 2]))

这会创建一个包含两列的 pandas 数据框。

我也尝试过使用:

pd.DataFrame({'test':np.ndarray([1 , 2])})

但返回错误:

/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in extract_index(data)
   5631 
   5632         if not indexes and not raw_lengths:
-> 5633             raise ValueError('If using all scalar values, you must pass'
   5634                              ' an index')
   5635 

ValueError: If using all scalar values, you must pass an index

最佳答案

IIUC:

有多种方法可以做到这一点。您可以通过传递列表数组来实现。

pd.DataFrame({'test':[np.array([1 , 2])]})

     test
0  [1, 2]

列表列的简单概括

df = pd.Series(np.array([[1, 2], [3, 4]]).tolist()).to_frame('test')    
df

     test
0  [1, 2]
1  [3, 4]

以及np.array

df = pd.Series(np.array([[1, 2], [3, 4]]).tolist()).apply(np.array).to_frame('test')
df

     test
0  [1, 2]
1  [3, 4]

或者你可以做更多。这将是一个 DataFrame,其中元素为 np.array

df = pd.Series(
    [np.array(v) for v in np.random.randint(10, size=(10, 3)).tolist()]
).to_frame('test')
df

        test
0  [3, 1, 5]
1  [8, 3, 7]
2  [1, 8, 6]
3  [3, 1, 7]
4  [6, 2, 7]
5  [1, 0, 8]
6  [8, 8, 0]
7  [6, 6, 7]
8  [4, 0, 9]
9  [5, 2, 1]

注意类型

df.applymap(type)

                      test
0  <class 'numpy.ndarray'>
1  <class 'numpy.ndarray'>
2  <class 'numpy.ndarray'>
3  <class 'numpy.ndarray'>
4  <class 'numpy.ndarray'>
5  <class 'numpy.ndarray'>
6  <class 'numpy.ndarray'>
7  <class 'numpy.ndarray'>
8  <class 'numpy.ndarray'>
9  <class 'numpy.ndarray'>

但是,我们也可以通过传递列表列表来跳过 np.array

df = pd.Series(np.random.randint(10, size=(10, 3)).tolist()).to_frame('test')
df

        test
0  [3, 1, 5]
1  [8, 3, 7]
2  [1, 8, 6]
3  [3, 1, 7]
4  [6, 2, 7]
5  [1, 0, 8]
6  [8, 8, 0]
7  [6, 6, 7]
8  [4, 0, 9]
9  [5, 2, 1]

注意类型

df.applymap(type)

             test
0  <class 'list'>
1  <class 'list'>
2  <class 'list'>
3  <class 'list'>
4  <class 'list'>
5  <class 'list'>
6  <class 'list'>
7  <class 'list'>
8  <class 'list'>
9  <class 'list'>

关于python - 将数组附加为 pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46477786/

相关文章:

python:使用基于另一列的值创建一个新列,然后连接。?

python - 如何使用具有正确字符编码的 python 读取 SQL 文件?

python - 如何在 Mxnet 中更改预训练模型中的层

python - 在 tkinter UI 中的两个对象之间绘制线条

python - 使用 cornice 的简单例份验证和 ACL

python - Pandas 更改所有列上的列数据类型

python - 为什么 SymPy 不能正确处理实数?

Python:使用正则表达式或其他方式提取 URL

python - 创建包含每个独特团队获胜顺序计数器的列表

python - 从 Pandas 中的假人重建分类变量