Skip to main content
 首页 » 编程设计

python之Pandas 切片与 if 条件

2025年05月04日22mengfanrong

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

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 替换为该要求。