python - 使用另一列的值切片 Pandas 列

标签 python python-2.7 pandas substring

所以我有一个数据框,其中一列包含一些文本。 我试图在列的每一行中找到 2 个字符串,然后将这两个字符串之间的行文本切片以获得子字符串。像这样:

startinds = df[column].str.find("First Event = ")
endinds   = df[column].str.find("\nLast Event = ")

df["first_timestamp"] = df[column].str.slice(startinds,endinds)

现在这行不通了,因为 startindsendinds是系列,所以我不能将它们用作对 column 中的字符串进行切片的索引.

任何人都知道我可以访问值以在每一行上执行子字符串的方法吗?

示例输入:

    Data
0   "Blahblah
     First Event = 09/20/2017 12:00:00
     Last Event = 09/20/2017 13:00:00
     Blahblahblah"
1   "Blahblahblahblah
     Blahablahblah
     First Event = 09/20/2017 12:30:00
     Last Event = 09/20/2017 12:45:00
     Blahblahblah"

输出:

    first_timestamp
0   "First Event = 09/20/2017 12:00:00"
1   "First Event = 09/20/2017 12:30:00"

最佳答案

要完成您的切片方法,您可以使用 lambda,即将 startindsendinds 存储在 df 中,然后使用 lambda 跨列基于列切片字符串,即(注意你需要一个转义字符来获取 \n)

df['startinds'] = df['Data'].str.find("First Event = ")
df['endinds']  = df['Data'].str.find("\\nLast Event = ")

df.apply(lambda x : str(x['Data'])[x['startinds']:x['endinds']],1 )

输出:

0    First Event = 09/20/2017 12:00:00
1    First Event = 09/20/2017 12:30:00
dtype: object

关于python - 使用另一列的值切片 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324009/

相关文章:

python - 在 python 中将缺失的行填充为 NaN

python - 导入 statsmodel.api 时出错。无法导入 specfun

macos - 导入错误 : No module named pymysql on Mac OS

python - 如何使用 for 循环和从其他 df 派生的新列名重命名 df 的列?

python - 按行中的子字符串对 DataFrame 进行排序

python - 使用有限数据查找多边形的中心

python - 使用 pip 升级最初通过 apt 安装的包

python - 装饰器适用于功能但不适用于类

python-2.7 - 将图像中的 Blob 识别为车辆的 Blob

python - 使用 pandas df 突出显示热图中每列的平均值数据单元格的自定义颜色