pandas 将多个 Dataframe 混洗在一起

o2g1uqev  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(160)

是否可以将多个DataFrame混洗在一起?
例如,我有一个 Dataframe df1和一个 Dataframe df2,我想随机地移动行,但是对这两个 Dataframe 使用相同的方式。

    • 示例**

df1

|___|_______|
| 1 |  ...  |
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |

df2

|___|_______|
| 1 |  ...  |
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |

重排**两个 Dataframe **的可能顺序后,可能是:

|___|_______|
| 2 |  ...  |
| 3 |  ...  |
| 4 |  ...  |
| 1 |  ...  |
2skhul33

2skhul331#

我认为可以通过将numpy.random.permutation应用于index来使reindex加倍,但是两个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

reindex_axis的替代方案:

print (df1.reindex_axis(idx, axis=0))
print (df2.reindex_axis(idx, axis=0))
pgvzfuti

pgvzfuti2#

x1, x2, y1, y2 = train_test_split(x, y, shuffle = True)
x3 = pd.concat([x1, x2])
y3 = pd.concat([y1, y2])

相关问题