我有两个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/