我有一个dataframe,想从中随机选择5行,并将它们放在另一个dataframe中,然后从我的第一个dataframe中删除这些行。例如,在这个dataframe中:
随机选择这些行:
并且具有没有它们的第一 Dataframe :
我该如何执行此操作?
8i9zcol21#
您可以使用sample:
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)
hrysbysz2#
对行进行采样,然后从与采样的索引相对应的原始 Dataframe 中删除行
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"])
yws3nbqq4#
您可以使用.sample获取n-5记录,而不是获取5条记录并按照以下方式删除它们
.sample
n-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用于恢复原始顺序,如果您不关心顺序,可能不会使用它。
sort_index
4条答案
按热度按时间8i9zcol21#
您可以使用
sample
:输出:
如果你的目标是将你的dataframe分成两个相等的部分,你可以这样做:
hrysbysz2#
对行进行采样,然后从与采样的索引相对应的原始 Dataframe 中删除行
hiz5n14c3#
您可以在两者之间进行外部连接,并且只保留第一个DataFrame中存在的条目。
yws3nbqq4#
您可以使用
.sample
获取n-5
记录,而不是获取5条记录并按照以下方式删除它们可能结果
sort_index
用于恢复原始顺序,如果您不关心顺序,可能不会使用它。