我正在尝试根据简单逻辑创建一个列,但它不起作用。 我想用一个简单的逻辑创建一个名为“商品”的新列:
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/