【发布时间】:2021-07-28 01:19:16
【问题描述】:
我有一本这样的字典:
dic= {'AGS': array([1, 1, 1, 2, 2, 2, 3, 3, 3], dtype=int64),
'CM': array([1, 1, 2, 2], dtype=int64),
'COA': array([1, 1, 1, 2, 2, 3, 3], dtype=int64),
'COL': array([1, 2], dtype=int64)}
还有这样的数据框:
c = pd.DataFrame(data={'CTY':['AGS', 'AGS', 'AGS', 'AGS', 'AGS', 'AGS',
'AGS', 'AGS', 'AGS', 'CM', 'CM', 'CM',
'CM', 'COA', 'COA', 'COA', 'COA', 'COA',
'COA', 'COA', 'COL', 'COL'],
'DIST':[1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 1,
1, 1, 2, 2, 3, 3, 1, 2],
'FA':[350, 320, 350, 360, 380, 380, 480,480,488,
780, 320, 310, 250, 141, 564, 564, 437, 438,
287, 287, 560, 560],
'ID':[1, 1, 2, 2, 3, 1, 2, 3, 1, 1, 1, 2, 2, 2,
3, 3, 1, 2, 3, 3, 1, 2],
'LTT':['A', 'A', 'B', 'B', 'B', 'C',
'C', 'C', 'B', 'C', 'A', 'E',
'S', 'B', 'B', 'C', 'C', 'A',
'C', 'A', 'E', 'S']
})
我想到的可能是使用字典以某种方式迭代数据帧,然后生成我真正需要的样本,该样本依赖于过滤后的 CTY 和 DIST 列,如下所示,那么我是否将这些结果连接起来:
df1=c[(df['CTY'] == 'AGS') &
(df['DIST'] == 1)].sample(n=2)
df2=c[(df['CTY'] == 'AGS') &
(df['DIST'] == 2)].sample(n=2)
df3=c[(df['CTY'] == 'AGS') &
(df['DIST'] == 3)].sample(n=2)
df4=c[(df['CTY'] == 'CM') &
(df['DIST'] == 1)].sample(n=2)
df5=c[(df['CTY'] == 'CM') &
(df['DIST'] == 2)].sample(n=2)
.
.
.
dfn=c[(df['CTY'] == 'COL') &
(df['DIST'] == 2)].sample(n=2)
pd.concat([df1,df2,df3, df4, df5, dfn])
你有什么想法?我想获得尽可能快的输出,我将不胜感激。也许有一个列表理解
【问题讨论】:
标签: python pandas dictionary list-comprehension