从列表

时间:2017-11-08 16:50:35

标签: python pandas list repeat

假设我有一个数据列表。对于eg [1,2,3,4,5],我的DataFrame中有1704行。现在我想添加只有这个值的新列,但应该重复到最后一行,如下所示:

1  
2  
3  
4  
5  
1  
2  
3  
4  
5  
..  
等等到最后一个记录。我试过df['New Column']=pd.Series([1,2,3,4,5]),但它只在前5行中插入记录,但我希望这个系列重复到最后一行。我在SO上提到了很多帖子,但没有找到任何相关的帖子。我是pandas框架的新手。请帮我解决一下这个。提前谢谢。

2 个答案:

答案 0 :(得分:5)

下面,我提出了两个解决方案,它们也处理df的长度不是列表长度的完美倍数的情况。

np.tile

v = pd.Series([1, 2, 3, 4, 5])
df['NewCol'] = np.tile(v, len(df) // len(v) + 1)[:len(df)]  

cycleislice

itertools为特色的纯python方法。

from itertools import cycle, islice

it = cycle([1, 2, 3, 4, 5])
df['NewCol'] = list(islice(it, len(df)))

答案 1 :(得分:2)

或者你可以在基本计算中做。

df['New']=(df.index%5).values
df.New=df.New.add(1)