我目前有一个Pandas对象,其中索引名是文档中的一个术语,其值是该术语在文档中发生的次数。下面是一个例子:
>>> import pandas as pd
>>> s = pd.Series([1, 4, 1, 2], index=["green", "blue", "red", "yellow"])
>>> print s
green 1
blue 4
red 1
yellow 2
dtype: int64我的目标是创建一个索引名称列表,并且每个索引名包含在列表中的次数与其值一样多。理想的产出如下:
terms = ["green", "blue", "blue", "blue", "blue", "red", "yellow", "yellow"]我的当前代码如下:
termList = list()
termCount = zip(s.index, s.values)
for name, cnt in termCount:
termList += [name]*cnt我得到了正确的输出,但我不相信这种方法是非常节奏式的。有人能就如何改进它提供建议吗?
发布于 2016-06-01 02:31:41
使用NumPy执行,而不是显式循环:
>>> np.repeat(s.index.values, s.values)
array(['green', 'blue', 'blue', 'blue', 'blue', 'red', 'yellow', 'yellow'], dtype=object)https://stackoverflow.com/questions/37558429
复制相似问题