Pandas:当大小不相等时,如何将Python列表中的值分配给数据框中的列

时间:2017-09-14 15:10:37

标签: python pandas dataframe

我有一个大小为x的列表abc [],我有一个形状为2x的数据框。现在,我想将列表abc []中的值分配给数据框中的新列。

当DF的大小等于或小于列表时,我只想说:

lst = [1,2,3, "hi", 5]
string = "bye"
print lst[3:4] + [string]

当df的大小超过列表(在这种情况下是两次)时,我会执行以下操作:

df['NewCol'] = abc[:df.shape[0]]

这里df的大小恰好是列表大小的两倍。而且我总是会遇到df的大小是列表的两倍/三倍的情况。这样一个条目就可以匹配两个或三个连续的条目。

有没有更快的方法来实现这个目标?

2 个答案:

答案 0 :(得分:1)

for($i = 0, $pagelen = rand(3,5); $i < $pagelen; $i++)
  

我总是会遇到df的大小是列表的两倍/三倍的情况。

df = pd.DataFrame(np.random.randn(4, 3), columns=list('ABC'))
abc = ['a', 'b']

答案 1 :(得分:0)

您可以使用while 1 > 0重复列表,因为您确定总会有一个整数。

numpy.repeat

如果您希望将列表重复整体,则可以使用import numpy as np import pandas as pd df = pd.DataFrame({'a':np.arange(6)}) abc = [4, 5, 6] df['NewCol'] = np.repeat(abc, len(df)/len(abc)) df a NewCol 0 0 4 1 1 4 2 2 5 3 3 5 4 4 6 5 5 6

np.tile