python - Pandas 切片与 if 条件

标签 python pandas

我正在尝试根据简单逻辑创建一个列,但它不起作用。 我想用一个简单的逻辑创建一个名为“商品”的新列:

if df['ID'].str[:3] = 'FWD': 
    df['Commodity'] = df['ID'].str[3:6]

我的 DF 看起来像这样:

df = pd.DataFrame({'ID':['FWDUSD921','FWDNZD344','EUR'], 'Volumes': [10,20,33]})

如果不匹配,将空格留空(或输入 0 - 无关紧要)

我尝试了 lambdas、if 和 apply 方法,但不断收到错误消息。

最佳答案

这里使用正则表达式


df.assign(Commodity=df.ID.str.extract(r'^FWD(\w{3})'))

          ID  Volumes Commodity
0  FWDUSD921       10       USD
1  FWDNZD344       20       NZD
2        EUR       33       NaN

正则表达式解释

^               # asserts position at start of line
FWD             # matches FWD exactly
(               # matching group 1
  \w{3}         # match 3 characters that match a-zA-Z0-9_
)               # end of matching group

如果对定义“货币字符串”的内容有任何其他要求(也许只有字母?),您可以将 \w 替换为该要求。

关于python - Pandas 切片与 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674594/

相关文章:

python - Python 中使用类型提示对性能有影响吗?

python - 循环遍历 python 中的文件夹并打开文件会引发错误

python - 向 Pandas Period 对象添加 n 个月?

python - Pandas 中的成对回归

python - 重新采样 Pandas 数据框正在删除列

python - 在 Python 中循环遍历图像的每个像素的更快方法?

javascript - 爬行网站以提取数据

python - 如何使用 urllib2 向 Coverity Web api 发送请求?

python - 使用python将一列转换为多行

python - 唯一值的动态分配 - Python