【发布时间】:2019-03-10 18:59:16
【问题描述】:
我有一个 pandas 数据框列(系列),其中包含另一列的字符串元素内感兴趣的单个字符的索引。有没有办法让我以矢量化方式基于索引列访问这些感兴趣的字符,类似于 dataframe['name'].str.* 函数? [编辑:见下面的评论]如果不是(或者不管,真的),你会说这里的首选方法是什么?
[编辑:这个假设是错误的,正如 jpp 所指出的,但我把它留在这里是为了可追溯]
我试图避免不必要的冗长,例如使用 map 应用翻译功能或必须构建单独的索引配方(如包含索引的字典)才能执行类似的操作
myDataFrame['myDesiredResult'] =
myDataFrame['myStrCol'].apply(myCharacterExtractionFunction, myIndexingRecipe)
如果可能的话,我更喜欢坚持使用 numpy 和 pandas,而不是混合更多模块。
数据可能是什么样子的说明:
myStrCol myIndices myDesiredResult
0 ABC 1 B
1 DEF 0 D
2 GHI 2 I
此外,为了了解 numpy 数组在 pandas 包装器中的实际行为方式可能有用,如果有人能解释拥有一个包含索引的单独 numpy 数组是否会有所不同,那就太好了,像这样:
import pandas
import numpy
myPandasStringSeries = pandas.Series(['ABC', 'DEF', 'GHI'])
myPandasStringSeries
0 ABC
1 DEF
2 GHI
myNumpyIndexArray = numpy.array([1, 0, 2])
myNumpyIndexArray
array([1, 0, 2])
在我看来,我想要的与子字符串相关的this suggestion 非常相似,但那里似乎还没有解决方案。除此之外,我发现的所有内容都与 Series.str 方法有关,这些方法使用 same 参数 对 Series 的所有元素进行操作,如下所示:
myDataFrame['newColumn'] = myDataFrame['oldColumn'].str.split('_').str.get(0)
【问题讨论】:
标签: python string pandas numpy dataframe