python - 应用来自多列的字符串和整数不起作用的函数

标签 python string pandas lambda

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

我已经尝试使用此答案(Apply function to create string with multiple columns as argument)中的解决方案,但它没有提供所需的输出。 H

我有两列:prod_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 来实现。但是,我偏向于高效的实现,因为我正在尝试学习如何编写优化的代码。请帮助:)

最佳答案

这有效。

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

关于python - 应用来自多列的字符串和整数不起作用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56523382/

相关文章:

python - 忽略 pandas.read_csv() 中破坏 header= keywords 的坏数据行

c++ - 将 c++ 异常传播到 cython - python 异常

python - 使用大量内存将类定义为枚举

Python:将符号移动到字符串的开头?

arrays - CAPL - 用逗号分隔字符串并设置在矩阵中

python - 替换 Pandas 数据框中任何列中的值

python - 签名中带有 TypeVar 的协议(protocol)的实现者不能使用自己的类型

python - 有没有办法用pytest沙箱测试执行,尤其是文件系统访问?

C++ 字符串和指针

python-3.x - cumalativive 所有其他列都需要 python ML 中带有 cumsum() 的日期列