2016-05-10 17 views
0

私はパンダのデータフレームdfを持っています。私はdfを3つの列で構成したい。最初はブランド名(文字列)、2番目は整数のリスト、3番目は浮動小数点数のリストである。だから各ブランドのために私は2つのリストを持っていて、それらをすべてデータフレームに入れて、ブランド名に基づいて異なるリストに簡単にアクセスしたいのです。パンダで「リスト」として列のタイプを定義します

は私が持っている:

count = [1,5,198,0,0,35] 
brand = 'Nike' 

と「ナイキ」行「に対応するカウント数」列にカウントリストを置くためには、私が試した次:これらの

df[df['brand']==brand].loc[0,'count'] = count 
df[df['brand']==brand]['count'] == count 
df[df['brand']==brand]['count'].loc[0] == count 

なしに動作しないだろうし、私はValueError: Must have equal len keys and value when setting with an iterableまたはA value is trying to be set on a copy of a slice from a DataFrameを得て、dfに何も変わらない。

パンダのデータフレームセルにリストを書き込むにはどうすればよいですか?

答えて

0

あなたが列名としてあなたのブランドを使用することができます。

import pandas as pd 

df = pd.DataFrame({'Nike' : [[1,5,198,0,0,35],[0.5,0.3,0.2]]},index = ['count','floats']) 

をして、あなたはこのような新しいブランドを追加することができます:あなたはこのデータフレームを取得します

df['Puma'] = [[1,2,3],[0.1,0.2]] 

を:

 Nike     Puma 
count [1, 5, 198, 0, 0, 35] [1, 2, 3] 
float [0.5, 0.3, 0.2]   [0.1, 0.2] 

値にアクセスするのは本当に簡単です。

0

このように作成できます。タイプはobjectです。

In [254]: df=pd.DataFrame({'Brand':['Nike','Puma'], 
'count':[[1,2,3],[0,0]],'price':[[50.]*3,[100.]*2]}) 

In [255]: df 
Out[255]: 
    Brand  count    price 
0 Nike [1, 2, 3] [50.0, 50.0, 50.0] 
1 Puma  [0, 0]  [100.0, 100.0] 
+0

答えていただきありがとうございます。データフレームの作成後にフィールドを埋める方法はありませんか? – Ilyes

+0

はいdf.ix [0,1] .append(4)は例です。 –

2

間違ったデータモデルを構築しているようです。 モデルは第1正規形(1NF)ではなく、あなたはそれを使用して多くの問題を抱えています。 正規化モデルを使用してください。

Brand  price 
0 Nike  50.0 
1 Nike  60.0 
2 Nike  70.0 
3 Puma  30.0 
4 Puma  100.0 

このモデルから任意の計算値を簡単に取得できます。

関連する問題