一起洗几个DataFrames

Sci*_*tas 3 python dataframe pandas

是否可以将多个DataFrame混合在一起?

例如,我有一个DataFrame df1和一个DataFrame df2.我想随机地对行进行随机播放,但对于两个DataFrame以相同的方式.

df1:

|___|_______|
| 1 |  ...  |
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |
Run Code Online (Sandbox Code Playgroud)

df2:

|___|_______|
| 1 |  ...  |
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |
Run Code Online (Sandbox Code Playgroud)

在洗牌之后,两个DataFrame的可能订单可能是:

|___|_______|
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |
| 1 |  ...  |
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 7

我想,你可以双击reindex在施加numpy.random.permutationindex,但需要双方DataFrameš具有相同的长度和相同的唯一索引值:

df1 = pd.DataFrame({'a':range(5)})
print (df1)
   a
0  0
1  1
2  2
3  3
4  4

df2 = pd.DataFrame({'a':range(5)})
print (df2)
   a
0  0
1  1
2  2
3  3
4  4

idx = np.random.permutation(df1.index)
print (df1.reindex(idx))
   a
2  2
4  4
1  1
3  3
0  0

print (df2.reindex(idx))
   a
2  2
4  4
1  1
3  3
0  0
Run Code Online (Sandbox Code Playgroud)

替代方案reindex_axis:

print (df1.reindex_axis(idx, axis=0))
print (df2.reindex_axis(idx, axis=0))
Run Code Online (Sandbox Code Playgroud)