実装に間違いがあることがあります。
まず、2つのコードブロックで、異なる変数を使用しています。最初のデータフレームはdf
と表示され、2番目のデータフレームはdata
となります。これは事故にありますか?
第2に、変数y
は単語の数ではなく、単に文字列の長さをカウントします。文字列内の単語数をカウントするには、len
をstring.split()
とすると、空白が検出されるたびに文字列が分割されます。別のキャラクターに分割したい場合は、その文字を単に引数として与えることができます:string.split(',')
。
最後に、パンダのデータフレームと一連のインデックス作成のための3つの異なる機能を有し、データを選択:
loc
ラベルベースのインデックス
iloc
のインデックスベースのインデックス用
ix
、混合インデックス用
標準のPythonインデックスよりも、これらの関数の使用が好ましいdf['Count']
をdf.loc[:, 'Count']
に置き換えてください。この詳細については、in the docsを参照してください。だからここ
は、あなたが希望何をバージョンです:
import pandas as pd
df = pd.DataFrame([['These are two words', 1], ['Two words', 2]], columns=('body', 'ticketID'))
df.loc[:, 'Count'] = ''
for idx, row in df.iterrows():
num_words = len(row.loc['body'].split())
df.ix[idx, 'Count'] = num_words
>>> df
body ticketID Count
0 These are two words 1 4
1 Two words 2 2
素敵なPython的ワンライナーはdf.apply
機能を使用することによってもあります:
df.loc[:, 'count'] = df.apply(lambda row: len(row.loc['body'].split()), axis=1)