1
Iris datasetからpandas DataFrameを作成しました。追加の列にSpecieIDを追加したいと思います。別の列に依存する追加の列をパンダデータフレームに追加する
def create_specie_id():
if iris["Species"] == "Iris-setosa":
ID = 0
elif iris["Species"] == "Iris-versicolor":
ID = 1
elif iris["Species"] == "Iris-virginica":
ID = 2
return ID
iris = iris.assign(SpecieID = lambda x: create_specie_id())
print (iris)
しかし、私は次のようなエラー受け取っ:
をそれは2.私はコードを試してみました、アイリス-setosaが0のID、アイリス-カワラタケ、1及びアイリス-virginicaのを取得することを意味します
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-58-2abd69ffef4b> in <module>()
10 return ID
11
---> 12 iris = iris.assign(SpecieID = lambda x: create_specie_id())
13
14 print (iris)
C:\Users\masc\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py in assign(self, **kwargs)
2495 results = {}
2496 for k, v in kwargs.items():
-> 2497 results[k] = com._apply_if_callable(v, data)
2498
2499 # ... and then assign
C:\Users\masc\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\common.py in _apply_if_callable(maybe_callable, obj, **kwargs)
439 """
440 if callable(maybe_callable):
--> 441 return maybe_callable(obj, **kwargs)
442 return maybe_callable
443
<ipython-input-58-2abd69ffef4b> in <lambda>(x)
10 return ID
11
---> 12 iris = iris.assign(SpecieID = lambda x: create_specie_id())
13
14 print (iris)
<ipython-input-58-2abd69ffef4b> in create_specie_id()
2
3 def create_specie_id():
----> 4 if iris["Species"] == "Iris-setosa":
5 ID = 0
6 elif iris["Species"] == "Iris-versicolor":
C:\Users\masc\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
953 raise ValueError("The truth value of a {0} is ambiguous. "
954 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 955 .format(self.__class__.__name__))
956
957 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
SpecieIDを含むこの列を作成するにはどうすればよいですか?
はこの作品、どうもありがとうございましたまさに意味通りです。 –
あなたは大歓迎です!がんばろう! – jezrael