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表连接

pandas移除dataframe字符串数据列中的前N个字符(remove the first n characters from values from column of dataframe)

利用Python进行数据分析:Pandas(Series+DataFrame)

python: pandas.DataFrame,如何避免keyerror?

Pandas DataFrame 作为函数的参数 - Python

如何利用 pandas 批量合并 Excel?