2017-01-05 5 views
0

私は'a'の列を持つdfのデータフレームを持っています。 dtype=objectの新しい列'b'を作成するにはどうすればよいですか?特定のdtypeで新しい空のpandasカラムを作成するには?

これは貧弱なフォームと考えられますが、現時点ではデータフレームdfがあり、列'a'には配列が含まれています(各要素はnp.arrayです)。新しい列'b'を作成します。各要素は、'a'に対応する要素のログを含む新しいnp.arrayです。

for i in df.index: 
     df.set_value(i,'b', log10(df.loc[i,'a'])) 

for i in df.index: 
     df.loc[i,'b'] = log10(df.loc[i,'a'])) 

どちらも私にValueError: Must have equal len keys and value when setting with an iterableを与える:私はこれらの2つの方法を試してみましたが、どちらも働いた瞬間

新しい列のdtypeがデフォルトでfloatに設定されていると思われますが、間違いかもしれません。

+1

'のDF [」 new '] =' ''または' df [' new '] =(np.nan).astype(str) '? – MaxU

+0

'numpy'配列を保持するために' pandas'データ構造を使用する感覚は何ですか? –

+0

私はそれが貧弱な形だと知っていますが、基本的にはこれらの配列を持っていて簡単にアクセスできるようにしたいのですが、論理的には次元グリッドを形成するので、マルチインデックスではなく、 (つまり、私は300の "もの"を持っています、それぞれの "事"は同じ4つのパラメータ/属性を持ち、各パラメータに対してはそのパラメータのN個のサンプルを持っています)。 –

答えて

1

あなたの列の各行は、それがベース10に、その要素単位対数を計算するための標準NumPy数学関数を使用することをお勧めします、アレイであるとおり

df['log_a'] = df.a.apply(lambda x: np.log10(x)) 

enter image description here

関連する問題