我有個問題。我想將名稱更改為數字,以便代替名稱有一個數字。另外,我希望數字前面有一個名字,例如Max Power變成Name 0。
當我使用 cat 代碼然后附加一個字串時,我收到以下錯誤
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U5'), dtype('int8')) -> None
如何將名稱更改為數字并將名稱放在前面?
資料框
name
0 Max Power
1 Erik Fullpower
2 Sofia Cat
代碼
import pandas as pd
d = {'name': ['Max Power', 'Erik Fullpower', 'Sofia Cat']}
df = pd.DataFrame(data=d)
name = df['name'].astype('category').cat.codes
name = "Name " name
我想要的是
name
0 Name 0
1 Name 1
2 Name 2
錯誤
---------------------------------------------------------------------------
UFuncTypeError Traceback (most recent call last)
<ipython-input-5-68feb913163d> in <module>
1 name = df['name'].astype('category').cat.codes
----> 2 name = "Name " name
5 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/roperator.py in radd(left, right)
7
8 def radd(left, right):
----> 9 return right left
10
11
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U5'), dtype('int8')) -> None
uj5u.com熱心網友回復:
你的意思是這樣的>?還是只是名字?
import pandas as pd
d = {'name': ['Max Power', 'Erik Fullpower', 'Sofia Cat']}
df = pd.DataFrame(data=d)
df['name'] = df.assign(index=df.index.astype(str)).agg(' '.join, 1)
print(df)
輸出#
name
0 Max Power 0
1 Erik Fullpower 1
2 Sofia Cat 2
或者
更簡單
import pandas as pd
d = {'name': ['Max Power', 'Erik Fullpower', 'Sofia Cat']}
df = pd.DataFrame(data=d)
df['name'] = df['name'] ' ' df.index.astype(str)
print(df)
#輸出
name
0 Max Power 0
1 Erik Fullpower 1
2 Sofia Cat 2
我很困惑所以只是添加另一個可能的答案
import pandas as pd
d = {'name': ['Max Power', 'Erik Fullpower', 'Sofia Cat']}
df = pd.DataFrame(data=d)
df['name_'] = 'name'
df['name_'] = df['name_'] ' ' df.index.astype(str)
print(df)
輸出#
name name_
0 Max Power name 0
1 Erik Fullpower name 1
2 Sofia Cat name 2
uj5u.com熱心網友回復:
df['name2'] = 'Name ' (df['name'].astype('category').cat.codes).astype(str)
df
name name2
0 Max Power Name 1
1 Erik Fullpower Name 0
2 Sofia Cat Name 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515941.html
標籤:Python熊猫
