所以我有一个数据框,其中一列包含一些文本。 我试图在列的每一行中找到 2 个字符串,然后将这两个字符串之间的行文本切片以获得子字符串。像这样:
startinds = df[column].str.find("First Event = ")
endinds = df[column].str.find("\nLast Event = ")
df["first_timestamp"] = df[column].str.slice(startinds,endinds)
现在这行不通了,因为 startinds
和 endinds
是系列,所以我不能将它们用作对 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,即将 startinds
和 endinds
存储在 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/