Python2.7 ve pandalar 0.11.0 kullanıyorum.pandas: Bazı numpy dizileri olan bir sütunu doldurun
DataFrame.apply (func) kullanarak bir veri çerçevesinin sütununu doldurmaya çalışıyorum. Func() işlevinin numpy dizisini (1x3) döndürmesi beklenir.
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
test amaçlıdır kullanılan fonksiyon:
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
komik sıfırdan dataframe oluşturduğunuzda beklendiği gibi oldukça iyi çalışıyor, ve iadeler şudur:
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]
Şimdiden teşekkürler.
' Seri: dönüş değeri bir
tuple
dönerseniz bunu yapmayacağım çünkü birlist
veyandarray
olduğunu '. Neden sütunlarınızda "df" veya ayrı bir "DataFrame" içinde 3 sütun var? –Sanırım bazen vektör formu bir miktar için daha doğaldır, örneğin koordinatlar. df.endPoint-df.startPoint' açık bir şekilde daha np.c_ [df.endX-df.startX, df.endY-df.startY, df.endZ-df.startZ] 'ye tercih edilir. – herrlich10