簡體   English   中英

numpy 2D數組作為熊貓元素

[英]numpy 2D arrays as pandas elements

我如何正確地將numpy二維數組用作熊貓行列元素?

我嘗試了一些簡單的示例,但是當我保存和加載數據庫時,數組的格式發生了變化,並且我無法訪問數組的索引(但是我通常可以訪問元素)。

一個例子:

import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['array','A','B'])
v = np.zeros((2,2))
df.loc[0,'array'] = v
df.loc[0,'A'] = 'some'
df.loc[0,'B'] = 'other'
df.to_csv('experiment.csv',index=False)

我嘗試讀取元素0 numpy數組的操作:

import pandas as pd
import numpy as np
df = pd.read_csv('experiment.csv')

new_v1 = df.loc[0,'array']
print(new_v1[0,1])

new_v2 = np.array(df.loc[0,'array'])
print(new_v2[0,1])

new_v3 = df.loc[0,'array'].item()
print(new_v3[0,1])

但是它顯示以下錯誤:

IndexError: too many indices for array
AttributeError: 'str' object has no attribute 'item'

如何為每個元素使用numpy數組? 可能嗎?

解決方案

正如ALollz所說,我不需要采用人類可讀的格式,因此我使用了pickle格式。 這種方式是直接保存,加載和使用與python變量相同的方式。

另一個選擇是使用另一個分隔符( mdk的解決方案)。 但是據我了解,您必須將數組轉換為字符串,然后再從字符串轉換回來,如果數組的尺寸不只一維,則需要重塑數組(使用reshape )。

您原始的DataFrame如下所示:

                      array     A      B
 0  [[0.0, 0.0], [0.0, 0.0]]  some  other

該數組包含3次“,”,並且您在將df.to_csv('experiment.csv',index=False)與標准分隔符“,”一起使用(請參閱docs )。

嘗試使用其他分隔符,例如df.to_csv('experiment.csv', sep=';',index=False)df = pd.read_csv('experiment.csv', sep=';')

您的DataFrame現在看起來像這樣:

                    array     A      B
0  [[0. 0.]\r\n [0. 0.]]  some  other

導入后,數組不再是數組,而是字符串。 使用numpy.fromstring將數組字符串轉換回numpy數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM