选择和删除pandas Dataframe 中的行

kuarbcqp  于 2023-03-21  发布在  其他
关注(0)|答案(4)|浏览(117)

我有一个dataframe,想从中随机选择5行,并将它们放在另一个dataframe中,然后从我的第一个dataframe中删除这些行。
例如,在这个dataframe中:

随机选择这些行:

并且具有没有它们的第一 Dataframe :

我该如何执行此操作?

8i9zcol2

8i9zcol21#

您可以使用sample

df1 = df.sample(n=5)
df2 = df.drop(df1.index)

输出:

>>> df1
   id color  price
9  10     b     20
6   7     b     20
8   9     g     20
7   8     g     20
1   2     r     20

>>> df2
   id color  price
0   1     r     20
2   3     y     20
3   4     y     20
4   5     g     20
5   6     r     20

如果你的目标是将你的dataframe分成两个相等的部分,你可以这样做:

import numpy as np

df1, df2 = np.array_split(df.sample(frac=1), 2)
hrysbysz

hrysbysz2#

对行进行采样,然后从与采样的索引相对应的原始 Dataframe 中删除行

df1 = df.sample(n=5)
df2 = df.drop(df1.index)
hiz5n14c

hiz5n14c3#

您可以在两者之间进行外部连接,并且只保留第一个DataFrame中存在的条目。

import pandas as pd

df1 = YOUR DATAFRAME
df2 = df1.sample(5).copy().reset_index(drop=True)

df=pd.merge(df1,df2,on=df1.columns.tolist(),how="outer",indicator=True)
df=df[df['_merge']=='left_only'].drop(columns=["_merge"])
yws3nbqq

yws3nbqq4#

您可以使用.sample获取n-5记录,而不是获取5条记录并按照以下方式删除它们

import pandas as pd
df = pd.DataFrame({"col1":[1,2,3,4,5,6,7,8,9,10,11,12]})
df2 = df.sample(len(df)-5).sort_index()
print(df2)

可能结果

col1
0     1
1     2
2     3
3     4
4     5
5     6
7     8

sort_index用于恢复原始顺序,如果您不关心顺序,可能不会使用它。

相关问题