python - Pandas 数据框中的矢量化字符串操作

标签 python pandas

我有一个很大的 DataFrame,比如

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})

我想创建一个 bool 值列,指示 sqldate 的年份是否与 pdf 名称的年份相同。

forloop 很容易做到这一点的另一种情况,但我想对其进行矢量化以提高速度/清洁度。但我想不通。

我尝试过更简单的方法,甚至只是制作一个 df['newcol'] 并尝试从日期中删除左边的四个字符。像 df['newcol'] = df['sqldate'][0:4] 但失败了。它只使 newcol = sqldate 的前四行和其余​​行成为 Nan,因为它将 [0:4] 解释为索引选择器。

对于在数据帧上使用操纵字符串值的更优雅、矢量化的方式有什么建议吗?

最佳答案

您可以使用 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

关于python - Pandas 数据框中的矢量化字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624966/

相关文章:

python - MinMaxScaler 仅生成正值

python - Django + Celery + Supervisord + Redis 设置时报错

python - 带有关键字参数的 PyObject_CallMethod

python - 以不同的时间间隔合并并填充 Pandas 中的两个数据帧

python - 从 Pandas 系列中获取值(value)

python - 基于数据框的两列创建网络并将其组件 ID 添加为新的聚合列

python - 我们如何在不从不同容器复制值的情况下初始化 python 数组?

python - 如何使用 azure-sdk-for-python 使用 key 对为 Linux VM 配置 SSH 登录?

python - pandas 中添加列的一些计算

python - groupby 语句是否会导致数据帧折叠成系列?