저는 python2.7 및 pandas 0.11.0을 사용하고 있습니다.팬더 : 일부 numpy 배열로 열을 채우십시오
DataFrame.apply (func)를 사용하여 데이터 프레임의 열을 채 웁니다. func() 함수는 numpy 배열 (1x3)을 반환합니다.
import pandas as pd
import numpy as np
df= pd.DataFrame(np.random.randn(4, 3), columns=list('ABC'))
print(df)
A B C
0 0.910142 0.788300 0.114164
1 -0.603282 -0.625895 2.843130
2 1.823752 -0.091736 -0.107781
3 0.447743 -0.163605 0.514052
테스트 목적을 위해 사용 기능 :
def test(row):
# some complex calc here
# based on the values from different columns
return np.array((1,2,3))
df['D'] = df.apply(test, axis=1)
[...]
ValueError: Wrong number of items passed 1, indices imply 3
재미있는 내가 처음부터 dataframe를 만들 때 예상대로 꽤 잘 작동하고, 반환한다는 것입니다 :
dic = {'A': {0: 0.9, 1: -0.6, 2: 1.8, 3: 0.4},
'C': {0: 0.1, 1: 2.8, 2: -0.1, 3: 0.5},
'B': {0: 0.7, 1: -0.6, 2: -0.1, 3: -0.1},
'D': {0:np.array((1,2,3)),
1:np.array((1,2,3)),
2:np.array((1,2,3)),
3:np.array((1,2,3))}}
df= pd.DataFrame(dic)
print(df)
A B C D
0 0.9 0.7 0.1 [1, 2, 3]
1 -0.6 -0.6 2.8 [1, 2, 3]
2 1.8 -0.1 -0.1 [1, 2, 3]
3 0.4 -0.1 0.5 [1, 2, 3]
미리 감사드립니다.
'시리즈 : 반환 값은 당신이
tuple
을 반환하는 경우 그것을하지 않을 때문에,list
또는ndarray
입니다 '. 왜 단지'df'에 3 개의 컬럼을 가지고 있거나 당신의 컬럼과 별도의'DataFrame'을 가지지 않을까요? –때로는 벡터 양식이 일부 수량 (예 : 좌표)에 더 자연스러운 경우가 있습니다. 'df.endPoint-df.startPoint'는 분명히 np.c_ [df.endX-df.startX, df.endY-df.startY, df.endZ-df.startZ]'보다 바람직합니다. – herrlich10