例外は、またはarray
をint
が格納されている列(array
)に挿入することに由来します。そしてarray
のPandasとNumPyには、 "不揃いの形"がありません。したがって、1つの行に2つの要素を持ち、他のすべての要素に1つの要素を持つことはできません。
「一般」オブジェクトを保存する必要があります。
import pandas as pd
df = pd.DataFrame({'col1' : [25, 12, 14, 21]})
df.col1[0] = [1, 2]
# ValueError: setting an array element with a sequence.
しかし、これは動作します:たとえば
>>> df.col1 = df.col1.astype(object)
>>> df.col1[0] = [1, 2]
>>> df
col1
0 [1, 2]
1 12
2 14
3 21
注:私はやってお勧めしませんそれobject
列は、具体的型付けされた列よりもはるかに遅いからです。しかし、あなたはfor
ループで列を反復しているので、パフォーマンスが必要ないと思われるので、object
配列を使用することもできます。
import pandas as pd
import numpy as np
def convert2Vector(angle):
"""I don't know what your function does so this is just something that
calculates the sin and cos of the input..."""
ret = np.zeros((angle.size, 2), dtype=float)
ret[:, 0] = np.sin(angle)
ret[:, 1] = np.cos(angle)
return ret
>>> df = pd.DataFrame({'col1' : [25, 12, 14, 21]})
>>> df['col2'] = [0]*len(df)
>>> df[['col1', 'col2']] = convert2Vector(df.col1)
>>> df
col1 col2
0 -0.132352 0.991203
1 -0.536573 0.843854
2 0.990607 0.136737
3 0.836656 -0.547729
ありがとうございました!ベクトルの要素を実数として使用するには、それらを再び変換する必要がありますか? –
@BenJo第2の場合または第1の場合を意味しますか?後者の場合は簡単です:最初の項目が必要な場所では 'col1'を使用し、2番目の項目が必要な場所では' col2'を使用してください。あなたが最初のケースについて話していたら、 'np.array(df。 – MSeifert
2カラムの解決策の問題は、定義された数の列を持つデータベースでデータフレームをインポートして、最初の解決策がよりよく適合するようにすることです。特にベクトルの要素に実数としてアクセスできる場合は特に –