[英]Unexpected behavior in assigning 2d numpy array to pandas DataFrame
我有以下代碼:
x = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
y = np.random.randn(4, 2)
x['A'] = y
我希望它因為形狀不匹配而拋出異常。 但是熊貓默默地接受了這個任務: y
的第一列被分配給x
。
這是故意設計嗎? 如果是的話,背后的理由是什么?
我試過兩只pandas
0.21和0.23。
感謝那些試圖幫助的人。 然而,盡管賞金即將到期,但沒有人給出滿意的答案。
讓我強調一下預期的答案:
由於賞金即將到期,我接受了最多的投票答案。 但它沒有提供上述問題的答案。
y
中的值是未索引的矩陣。 情況x['A'] = y
在這里工作,因為它從矩陣中取出第一個項目並將其分配給'A'
。
同樣的,
x = pd.DataFrame(np.zeros((4, 2)), columns=['A', 'B'])
y = np.random.randn(4, 2)
x[['A', 'B']] = y
也會工作,因為熊貓會丟棄額外的數據。 如果您嘗試傳遞較少的列,請說:
x = pd.DataFrame(np.zeros((4, 2)), columns=['A', 'B'])
y = np.random.randn(4, 1)
x[['A', 'B']] = y
這也將起作用,因為它將為兩個列分配相同的值。 這種情況類似於x['A'] = 0
,它將用零替換A
列中的所有數據。
對於
x = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
y = np.random.randn(4, 2)
如果x ['A'] = y;則復制列,如果我們使用不同的列長度迭代它,例如:
x = pd.DataFrame(np.zeros((4, 3)), columns=['A','B','C'])
y = np.random.randn(4, 2)
並嘗試x ['A'] = y然后也復制第一列,但如果我們等於x = y,則用y矩陣復制x數據幀。 所以我想我們正在試圖將數據框列與numpy中創建的matix等同起來。 希望它解釋
Pandas系列是numpy數組,因為它的一列,它將它視為一個對象,引用已經改變。
>> import numpy as np
>>> x = np.zeros((4,1))
>>> x = np.random.randn(4,2)
>>> y= np.zeros((4,1))
>>> y
array([[0.],
[0.],
[0.],
[0.]])
>>> x
array([[-1.00731291, -0.37151425],
[-0.78154847, -0.72854126],
[-0.98566253, 1.68786232],
[ 0.12614892, 0.41804799]])
>>> y = x
>>>y
array([[-1.00731291, -0.37151425],
[-0.78154847, -0.72854126],
[-0.98566253, 1.68786232],
[ 0.12614892, 0.41804799]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.