[英]Disproportionate stratified sampling in Pandas
如何從以下數據框中的每組(列Name
)中隨機選擇一行:
Distance Name Time Order
1 16 John 5 0
4 31 John 9 1
0 23 Kate 3 0
3 15 Kate 7 1
2 32 Peter 2 0
5 26 Peter 4 1
預期結果:
Distance Name Time Order
4 31 John 9 1
0 23 Kate 3 0
2 32 Peter 2 0
例如,您可以使用numpy
函數random.permutation
對所有樣本進行混洗。 然后groupby
由Name
和取N從每組第一行:
df.iloc[np.random.permutation(len(df))].groupby('Name').head(1)
你可以使用unique
df['Name'].unique()
打亂數據幀:
df.sample(frac=1)
然后刪除重復的行:
df.drop_duplicates(subset=['Name'])
df.drop_duplicates(subset='Name')
Distance Name Time Order
1 16 John 5 0
0 23 Kate 3 0
2 32 Peter 2 0
這應該會有所幫助,但這不是隨機選擇,它保留了第一個
如何使用隨機
像這樣,
導入您提供的數據,
df=pd.read_csv('random_data.csv', header=0)
看起來像這樣,
Distance Name Time Order
1 16 John 5 0
4 3 John 9 1
0 23 Kate 3 0
3 15 Kate 7 1
然后得到一個隨機的列名,
colname = df.columns[random.randint(1, 3)]
並在其下方選擇“名稱”,
print(df[colname])
1 John
4 John
0 Kate
3 Kate
Name: Name, dtype: object
當然,我可以將其濃縮為,
print(df[df.columns[random.randint(1, 3)]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.