使用 Pandas 数据框进行向量化字符串操作

4

I have a large DataFrame, something like

import pandas as pd

sqldate = pd.Series(["2014-0-1", "2015-10-10", "1990-23-2"])
pdf = pd.Series(["2014.pdf", "2015.pdf", "1999.pdf"])

df = pd.DataFrame({"sqldate":sqldate, "pdf": pdf})

我想创建一个布尔列,指示sqldate的年份是否与pdf名称的年份相同。
另一种情况是使用for循环很容易实现,但我想通过向量化来使它更快/更清晰。但我无法找到方法。
我尝试了更简单的方法,甚至只是创建一个df ['newcol']并尝试从日期中剥离左侧的四个字符。像df ['newcol'] = df ['sqldate'] [0:4],但失败了。它只会使newcol的前四行等于sqldate,其余行为NaN,因为它将[0:4]解释为索引选择器。
有没有更优雅,向量化的方式在数据框上使用操作后的字符串值?
1个回答

9
您可以使用Series.str来对列使用字符串函数。因此,df['sqldate'].str[0:4]将提取前4个字符(如果存在),以下检查两个列(pdf和sqldate)的前四个字符是否相同,并将结果放入“newcol”中:
df['newcol'] = df['sqldate'].str[0:4]==df['pdf'].str[0:4]

关于字符串函数的更多信息,请参见:

http://pandas.pydata.org/pandas-docs/stable/text.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接