簡體   English   中英

將numpy數組的Pandas列轉換為python列表

[英]Convert Pandas column of numpy arrays to python list

如何將numpy數組的pandas列轉換為列表?

熊貓數據框構造

A = np.random.randint(0,15000000,65000)                                      
B = [np.random.randint(0,15000000,k) for k in np.random.randint(2,101,100)]

A32 = A.astype(np.int32)

from itertools import chain

sizes = np.fromiter(chain((0,),map(len,B)),np.int32,len(B)+1)
boundaries = sizes.cumsum()

# force int32
B_all = np.empty(boundaries[-1],np.int32)
B32 = np.split(B_all, boundaries[1:-1])
df = pd.DataFrame([A32, B32]).T

嘗試將第二列轉換為列表

df[1] = df[1].apply(lambda x: x.tolist() )

結果錯誤消息

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-35-6d36b7b9c250> in <module>()
----> 1 df[1] = df[1].apply(lambda x: x.tolist() )

1 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
   3589             else:
   3590                 values = self.astype(object).values
-> 3591                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   3592 
   3593         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

<ipython-input-35-6d36b7b9c250> in <lambda>(x)
----> 1 df[1] = df[1].apply(lambda x: x.tolist() )

AttributeError: 'float' object has no attribute 'tolist'

首先,我將假設A32是一個錯字(因為它不存在),並且您打算使用A

A的長度為65000, B32的長度為100。數據幀的第1列使用NaN s(浮點值)擴展為65000,這顯然沒有tolist方法。 這就是為什么您會收到此錯誤。 要解決此問題,您可以只使用A的前100個元素,即A[:100] ,也可以只將B32設為A

暫無
暫無

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

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