我有两个dataFrame,从中将一列的唯一值提取到a和b中

a = df1.col1.unique()
b = df2.col2.unique()


现在a和b是这样的

['a','b','c','d'] #a
[1,2,3] #b


它们现在是numpy.ndarray

我想加入他们有这样的DataFrame

   col1  col2
0    a     1
1    a     2
3    a     3
4    b     1
5    b     2
6    b     3
7    c     1
   . . .


有没有一种方法可以不使用循环?

最佳答案

更新:

B. M.使用numpy的解决方案要快得多-我建议使用他的方法:

In [88]: %timeit pd.DataFrame({'col1':np.repeat(aa,bb.size),'col2':np.tile(bb,aa.size)})
10 loops, best of 3: 25.4 ms per loop

In [89]: %timeit pd.DataFrame(list(product(aa,bb)), columns=['col1', 'col2'])
1 loop, best of 3: 1.28 s per loop

In [90]: aa.size
Out[90]: 1000

In [91]: bb.size
Out[91]: 1000


尝试itertools.product

In [56]: a
Out[56]:
array(['a', 'b', 'c', 'd'],
      dtype='<U1')

In [57]: b
Out[57]: array([1, 2, 3])

In [63]: pd.DataFrame(list(product(a,b)), columns=['col1', 'col2'])
Out[63]:
   col1  col2
0     a     1
1     a     2
2     a     3
3     b     1
4     b     2
5     b     3
6     c     1
7     c     2
8     c     3
9     d     1
10    d     2
11    d     3

关于python - 将唯一值连接到新的数据框(python,pandas),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36753799/

10-12 16:53