簡體   English   中英

連接兩列值 dataframe

[英]Concat two columns values of dataframe

我有一個 dataframe 如下:

     Name  Age
0    Alex   10
1     Bob   12
2  Clarke   13

dataframe 創建為:

data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])

我想將兩列的字符串連接為:

     Name      Age
0    10 Alex   10 
1    12 Bob    12 
2    13 Clarke 13 

我嘗試使用df["Name"] = df["Age"]+" "+df["Name"] ,這導致了以下錯誤:

追溯(最近調用最后):文件“”,第 1 行,在文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/common.py”,第 65 行,在new_method return method(self, other) 文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/ init .py”,第 343 行,包裝結果 = arithmetic_op(lvalues, rvalues , op) 文件“/anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”,第 189 行,in arithmetic_op res_values = na_arithmetic_op(lvalues, rvalues, op) File “ /anaconda3/envs/env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”,第 149 行,在 na_arithmetic_op result = masked_arith_op(left, right, op) File “/anaconda3/envs/ env1/lib/python3.6/site-packages/pandas/core/ops/array_ops.py”,第 111 行,在 masked_arith_op result[mask] = op(xrav[mask], y) numpy.core._exceptions.UFuncTypeError: ufunc 'add' 不包含帶有簽名匹配類型的循環 (dtype('<U21'), dtype('<U21')) -> dtype('<U21')

由於Age是一個int列,您需要使用astype將其轉換為str

In [2511]: df['Name'] = df["Age"].astype(str) + " " + df["Name"]

In [2511]: df['Name']
Out[2511]: 
0      10 Alex
1       12 Bob
2    13 Clarke

Series.str.cat

df['Name'] = df['Age'].astype(str).str.cat(df['Name'], sep=' ')

        Name  Age
0    10 Alex   10
1     12 Bob   12
2  13 Clarke   13

這是一個可能的解決方案:

df['Name'] = df['Age'].map(str) + ' ' + df['Name']

您可以使用:

df['Name']=df['Age'].apply(lambda x:str(x)) + ' ' + df['Name']

我們可以使用 apply function 將 dataframe“age”列從 int 轉換為字符串,然后使用“+”運算符將其連接到“name”列。

df["姓名"] = df["年齡"].apply(str) + " " + df["姓名"]

df[“名字”]

output 看起來像這樣

0      10 Alex
1      12 Bob
2      13 Clarke

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM