Pandas Dataframe 中的回收利用
Posted
技术标签:
【中文标题】Pandas Dataframe 中的回收利用【英文标题】:Recycling in Pandas Dataframe 【发布时间】:2018-11-30 02:05:06 【问题描述】:当用 R 中较短数组中的值填充数组时,R 将“回收”较短数组中的元素。例如,使用数组['a','b','c']
设置长度为7 的数组[ , , , , , , ]
将得到['a','b','c','a','b','c','a']
。
是否有使用类似回收方式填充 pandas 列(或 numpy 数组)的内置方法?
【问题讨论】:
【参考方案1】:有点,但不像在 R 中那么简单。
from itertools import cycle, islice
cyc = cycle(['a','b','c'])
pd.Series(list(islice(cyc, 0, 7)))
0 a
1 b
2 c
3 a
4 b
5 c
6 a
dtype: object
首先,使用itertools.cycle
创建一个无限迭代器。然后,使用itertools.islice
切出这个无限迭代器的一部分,只检索您想要的元素数量。
将7
更改为您希望系列的大小。
【讨论】:
有趣的是,这不是 pandas 的默认行为,但我已经使用 pandas 近 3 年了,现在才需要这个功能。感谢您将我的注意力拉回到itertools
【参考方案2】:
与numpy.resize
-
In [199]: a = ['a','b','c']
In [200]: np.resize(a,7)
Out[200]: array(['a', 'b', 'c', 'a', 'b', 'c', 'a'], dtype='|S1')
【讨论】:
以上是关于Pandas Dataframe 中的回收利用的主要内容,如果未能解决你的问题,请参考以下文章
pandas移除dataframe字符串数据列中的前N个字符(remove the first n characters from values from column of dataframe)
利用Python进行数据分析:Pandas(Series+DataFrame)
python: pandas.DataFrame,如何避免keyerror?