pythonのデータフレームを引数として関数利用についてご質問です。 データフレームから2つの列を引数とし、関数を利用して新しく列を追加したく試行錯誤していますが上手くいきません泣。 ### 発生している問題・エラーメッセージ 関数の引数が1つの場合は、以下のURLを参考に新しく列を追加することが出来ています。 https://docs.pyq.jp/python/pydata/pandas/apply.html 関数の引数が2つの場合は、どうすればよいでしょうか? エラーメッセージ raceback (most recent call last): File "C:\Users\yasuda3809\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\indexes\base.py", line 3081, in get_loc return self._engine.get_loc(casted_key) File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\hashtable_class_helper.pxi", line 4554, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas\_libs\hashtable_class_helper.pxi", line 4562, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: ('x', 'y') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "test.py", line 13, in <module> df["new_xy"]=df["x","y"].apply(add_two) File "C:\Users\yasuda3809\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\frame.py", line 3024, in __getitem__ indexer = self.columns.get_loc(key) File "C:\Users\yasuda3809\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\core\indexes\base.py", line 3083, in get_loc raise KeyError(key) from err KeyError: ('x', 'y') ```ここに言語``` コード ```を入力 import pandas as pd df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['x','y','z']) def add_one(x): return x+1 def add_two(x,y): return x+y df["new_x"]=df["x"].apply(add_one) df["new_xy"]=df["x","y"].apply(add_two) print(df)
該当のソースコード
言語:python
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['x','y','z'])
def add_one(x):
return x+1
def add_two(x,y):
return x+y
df["new_x"]=df["x"].apply(add_one)
df["new_xy"]=df["x","y"].apply(add_two)
print(df)
試したこと
エラー箇所を以下のコードに変更しましたが、上手くいきませんでした。
・df["new_xy"]=df["x"],["y"].apply(add_two)
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー