2016-10-16 31 views
1

私はPythonの初心者です。時々、いくつかの操作で混乱します 私はroというデータフレームを持っていますが、このデータフレームを特定の列PN 3D特定の値921と、私は次のコードを使用してheadlampと呼ばれる新しいデータフレームに結果を割り当てる:データフレームのスライスを新しいデータフレームに変換する方法

headlamp = ro[ro['PN 3D']=="921"] 

は私のヘッドランプもデータフレームであるか、単にスライスありますか? 私がこれを求めているのは、後でスクリプトに奇妙な警告と結果が出てくるからです。

などは、私がheadlamp

headlamp['word'] = "" 

に、私が割り当てられたwordと呼ばれる新しい列を作成するI次の警告だ:

A value is trying to be set on a copy of a slice from a DataFrame 

私は結果を割り当てるには、以下のスクリプトを使用した後に〜headlamp['word']

i = 0 
for row in headlamp['Comment'].astype(list): 
    headlamp['word'][i] = Counter(str(row).split()) 
i+=1 
print headlamp['word'] 

私はheadlamp.tail()を使用したとき、最後の行headlamp['word']が空だったので、同じ警告が現れ、私の結果に影響を与えました。

誰に問題があり、どのように修正するのか考えている人はいますか?

すべてのヘルプは非常に休息とコメントについては

+0

'ヘッドランプ= RO [RO [ 'PN 3D'] ==" 921であります"] .copy()' – MaxU

+0

'headlamp'がデータフレームの場合、' series'オブジェクトをcol空の文字列だけではなく、umn 'headlamp ['word'] = pd.Series(...)' –

+0

のようなもの両方の返信ありがとうございます。私はこの '.copy()'を使いました。私は同じ警告とエラー@MaxUを持っています。 ヘッドランプ[ '単語:あなたのリプライ@TammoHeerenについては、私はまた、私は、 '私はヘッドランプ内の行[「コメント」] = 0の スクリプトを適用しかし後に、列' word'にすべての行に0の値を割り当てましたi = 1 ヘッドランプ['word'] i = 0ヘッドランプ['Comment']の行に 行: ヘッドランプ['word] [' word '] i = 0ヘッドランプ[' word '] i = '] [i] =(Counter(str(row))。 i + = 1 print headlamp ['word'] ' –

答えて

0

使用.loc

headlamp = ro.loc[ro['PN 3D']=="921"] 

を理解されるであろう...私は非常に困惑しています。しかし、これは私の最高の推測

セットアップ

import pandas as pd 
from string import ascii_lowercase 

chars = ascii_lowercase + ' ' 
probs = [0.03] * 26 + [.22] 

headlamp = pd.DataFrame(np.random.choice(list(chars), (10, 100), p=probs)).sum(1).to_frame('comment') 
headlamp 

enter image description here

headlamp['word'] = headlamp.comment.str.split().apply(lambda x: pd.value_counts(x).to_dict()) 
headlamp 

enter image description here

+0

ありがとうございます@piRSquared、 '.loc'で警告が働いているようですが、私はまだ1つの問題に直面しています。 '私用前照灯における行の= 0 [' コメント ']: headlamp.loc [I、' 単語 '] =(カウンタ(STR(行).split())) I + = 1 プリントヘッドランプ[ 'word ']'と次のエラーがありました: 'ValueError:イテラブルで設定したときに等しいlenのキーと値が必要です' どこで問題があるのでしょうか? –

+0

スクリプトをもう一度書き直してください headlamp ['Comment']の行にi = 0があります:headlamp.loc [i、 'word'] =(Counter(str(row).split()))i + = 1 ' –

+0

私のデータフレームの各行の列' Comment'の各単語の出現を計算することで、 'word'カラムの辞書を作成しようとしています。 –

関連する問題