使用多列中的字符串和整数应用函数不起作用

2024-09-29 17:14:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个基于两列的组合字符串,一个是整数,另一个是字符串。我需要把它们组合成一个字符串

我已经在这里尝试使用这个答案的解决方案(Apply function to create string with multiple columns as argument),但是它没有给出所需的输出。小时

我有两列:prod\u no是一个整数,prod是一个字符串。比如说

| prod_no | PROD  | out           |   |   |
|---------|-------|---------------|---|---|
| 1       | PRODA | @Item=1=PRODA |   |   |
| 2       | PRODB | @Item=2=PRODB |   |   |
| 3       | PRODC | @Item=3=PRODC |   |   |

为了获得最后一列,我使用了以下代码:

prod_list['out'] = prod_list.apply(lambda x: "@ITEM={}=={}"
         .format(prod_list.prod_no.astype(str), prod_list.PROD), axis=1)

我正在尝试生成列“out”,但是代码的结果很奇怪。输出为@Item=0 1 22 3…非常奇怪。我特别尝试使用apply和lambda实现。然而,我倾向于高效的实现,因为我试图学习如何编写优化的代码。请帮忙:)


Tags: lambdano字符串答案代码整数prodout
2条回答

您也可以尝试使用zip:

df=df.assign(out=['@ITEM={}=={}'.format(a,b) for a,b in zip(df.prod_no,df.PROD)])
#or directly : df.assign(out='@Item='+df.prod_no.astype(str)+'=='+df.PROD)

   prod_no   PROD             out
0        1  PRODA  @ITEM=1==PRODA
1        2  PRODB  @ITEM=2==PRODB
2        3  PRODC  @ITEM=3==PRODC

这很管用

import pandas as pd

df= pd.DataFrame({"prod_no": [1,2,3], "PROD": [ "PRODA", "PRODB", "PRODC" ]})
df["out"] = df.apply(lambda x: "@ITEM={}=={}".format(x["prod_no"], x["PROD"]), axis=1)
print(df)

输出:

    PROD  prod_no             out
0  PRODA        1  @ITEM=1==PRODA
1  PRODB        2  @ITEM=2==PRODB
2  PRODC        3  @ITEM=3==PRODC

相关问题 更多 >

    热门问题