2016-10-05 10 views
-2

numpy.darrayをデータフレームに追加しようとしていますが、ほとんど成功しません。 データフレームはuser2、numpy.darrayはCallTimeと呼ばれます。Pandasのデータフレームに列を追加します

私が試み:

user2["CallTime"] = CallTime.values 

を私はエラーメッセージを表示します。

user2["CallTime"] = user2.assign(CallTime = CallTime.values) 
私は上記のように再び同じエラーメッセージを取得:

Traceback (most recent call last): 
File "<ipython-input-53-fa327550a3e0>", line 1, in <module> 
user2["CallTime"] = CallTime.values 
AttributeError: 'numpy.ndarray' object has no attribute 'values' 

それから試みました。

また、マージコマンドを使用しようとしましたが、何らかの理由で、私がpandasをインポートしたにもかかわらず、Pythonで認識されませんでした。 CallTime以下の例ではデータフレームです:

user3 = merge(user2, CallTime) 

エラーメッセージ:

Traceback (most recent call last): 
    File "<ipython-input-56-0ebf65759df3>", line 1, in <module> 
    user3 = merge(user2, CallTime) 
    NameError: name 'merge' is not defined 

任意のアイデア?

ありがとうございました!

+1

'user2 [" CallTime "] = CallTime'を試しましたか? :) – ayhan

+0

エラーメッセージを返します。質問の本文を参照してください。 – AlK

+0

人があなたを助けてくれるようにしたい場合は、[mcve]の作成方法を見てください。具体的には、データのフォーマットを知る必要があります。 – Jezzamon

答えて

0

pandas DataFrameは、2次元データ構造であり、DataFrameの各列は、1次元Seriesである。したがって、1つの列をDataFrameに追加する場合は、まずそれをSeriesに変換する必要があります。 np.ndarrayは多次元データ構造です。あなたのコードから、np.ndarray CallTimeの形はnx1n行と1 colmun)でなければならず、それをSeriesに変換するのは簡単だと思います。これは、2つの列の 'A' および 'B'、および5行とデータフレームdfを作成

df = DataFrame(np.random.rand(5,2), columns=['A', 'B']) 

:ここでは一例です。

CallTime = np.random.rand(5,1) 

これはこれはdfに新しい列を追加しますあなたのnp.ndarrayデータCallTime

df['C'] = pd.Series(CallTime[:, 0]) 

であると仮定します。ここでCallTime[:,0]CallTimeの最初の列を選択するために使用されるので、np.ndarrayから別の列を使用する場合は、インデックスを変更します。

dfCallTimeの行数が等しいことを確認してください。

これは役に立ちます。私は唯一の文書を提供する代わりに考える

+0

今回は、user3という名前の別のデータフレームとlabelsという名前のnp.ndarrayを使って、あなたが提案したことを試しました。 タイプ(ラベル) OUT [64]:numpy.ndarray labels.shape OUT [65]:(1405) user3.shape OUT [66]:(1405の両方が同じ数の行を有します4) user3 ['labels'] = pd.Series(labels [:, 0]) 、次のエラーメッセージが表示されました。 ファイル ""、行1 、in user3 ['labels'] = pd.Series(labels [:, 0]) IndexError:配列のインデックスが多すぎます – AlK

0

、私はサンプルを提供しようとします:

import numpy as np 
import pandas as pd 

data = {'A': [2010, 2011, 2012], 
    'B': ['Bears', 'Bears', 'Bears'], 
    'C': [11, 8, 10], 
    'D': [5, 8, 6]} 
user2 = pd.DataFrame(data, columns=['A', 'B', 'C', 'D']) 

#creating the array what will append to pandas dataframe user2 
CallTime = np.array([1, 2, 3]) 

#convert to list the ndarray array CallTime, if you your CallTime is a matrix than after converting to list you can iterate or you can convert into dataframe and just append column required or just join the dataframe. 

user2.loc[:,'CallTime'] = CallTime.tolist() 


print(user2) 

result of dataframe user2

私はこの1つは、なぜ私たちを見つける必要がある場合numpy.ndarray.tolistマニュアルを参照してくださいまた、助けになると思いますリストを必要とする方法、またここでは、numpyからデータフレームを作成する方法の例が必要です。https://stackoverflow.com/a/35245297/2027457

+0

まだエラーメッセージが表示されています。質問の本文を見てください。 – AlK

+0

@AlexanderKonstantinidis、これを試してみてください。user2.loc [:、 'CallTime'] = CallTime.tolist()、私は答えを編集しました。 – sb0709

+0

ありがとうございます。私はまだ奇妙なものである同じエラーメッセージを持っていますが、列が追加されました。 – AlK

関連する問題