1

SQL の更新クエリと同じ意味で、データフレーム内のデータの一部を更新する必要があります。私の現在のコードは次のとおりです。

import pandas

df = pandas.read_csv('filee.csv') # load trades from csv file       

def updateDataframe(row):
    if row['Name'] == "Joe":
        return "Black"
    else:
        return row

df['LastName'] = df.apply(updateDataframe,axis=1)

ただし、次のエラーが返されます。

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    df['LastName'] = df.apply(updateDataframe,axis=1)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 2038, in __setitem__
    self._set_item(key, value)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 2085, in _set_item
    NDFrame._set_item(self, key, value)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/generic.py", line 582, in _set_item
    self._data.set(key, value)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 1459, in set
    _set_item(self.items[loc], value)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 1454, in _set_item
    block.set(item, arr)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 176, in set
    self.values[loc] = value
ValueError: output operand requires a reduction, but reduction is not enabled

これを解決するにはどうすればよいですか。または、私がやろうとしていることを達成するためのより良い方法はありますか?

4

1 に答える 1

2

@Jeff は上記のコメントで問題を簡潔に実装していますが、コードのエラーを修正したい場合は、次のことを試してください。

次の内容のファイルfilee.csvの場合:

Name,LastName
Andy,Blue
Joe,Smith 

以下に示すように、else の後に、行オブジェクトではなく姓の文字列を返す必要があります。

df = pandas.read_csv('filee.csv') # load trades from csv file       

def updateDataframe(row):
    if row['Name'] == "Joe":
        return "Black"
    else:
        return row['LastName']

df['LastName'] = df.apply(updateDataframe,axis=1)
print df

次の出力が得られます。

   Name LastName
0  Andy     Blue
1   Joe    Black
于 2013-05-09T00:27:11.147 に答える