我有一个熊猫数据框,如下所示:
# Name City
1 John NYC
2 Doe Berlin
3 Jonathan Tokyo
4 Andrew Barcelona
5 Heather London
.. ...... ......
.. ...... ......
.. ...... ......
60000 Summer Madrid
让我们说我有一个像这样的城市列表:[NYC, Berlin, Tokyo]
。
我需要获取上述数据框的样本,其大小为n(例如n = 200),该样本随机但根据列表中的城市选择行。最好每个城市的行数相同。
如何使用熊猫来做到这一点?
谢谢
答案 0 :(得分:1)
这是一个两步过程。
首先根据您的城市创建一个子集
subset_DF = DF[DF.cities.isin(['NYC', 'Berlin','Tokyo'])]
然后使用pandas DataFrame方法创建示例
your_Sample = subset_DF.sample(n = 200)
或内联
your_Sample = DF[DF.cities.isin(['NYC', 'Berlin','Tokyo'])].sample(n = 200)
答案 1 :(得分:0)
不确定这是否最有效,但我是这样做的:
假设您想要每个城市 N 随机行。您可以在唯一的城市名称上运行 for 循环并获取每个城市名称的数据框子集,并从此子集中采样。在您的情况下,这看起来像这样:
df_list = list()
for city_name in df['City'].unique():
df_subset = df.loc[df['City'] == city_name]
df_list.append(df_subset.sample(N))
df_sample = pd.concat(df_list).reset_index(drop=True)
答案 2 :(得分:-1)
sub_sample = df [df ['City'] ==“ NYC”]#选择所有带有“ city” ==“ NYC”的行
sub_sample.iloc [0:20 ,:]#假设您需要提取20行
以相同的方式选择其他两个样本。