设置向上
我抓住住房广告数据并用熊猫分析。我已经计算了平均统计数据并将它们插入到pandas数据帧中:<div class="holder">
<div class="spinner">
</div>
<div class="loader">
LOADING ...
</div>
</div>
。
其中一个district_df
列包含地区名称:district_df
。
另一个district_df['district']
列包含子分区名称:district_df
他们看起来像,
district_df['subdistrict']
问题
我从每个区 district subdistrict
Bergen-Enkheim Bergen-Enkheim
Bornheim/Ostend Bornheim
Bornheim/Ostend Ostend
Harheim Harheim
Innenstadt I Altstadt
Innenstadt I Bahnhofsviertel
Innenstadt I Gallus
Innenstadt II Bockenheim
Innenstadt II Westend-Nord
⋮ ⋮
创建一个分区表(district_table
)。即对于上面我创建了五个分区表。我通过以下代码执行此操作,
district_df
此代码有效,即:创建每个区的表。
但是,for district in d_set: # d_set is a set containing all district names
district_table = district_df[district_df['district'].str.match(district)]
的表格还包含Innenstadt II
的子分区。
在我看来,Innenstadt I
不匹配,但部分匹配。即.str.match(district)
将与Innenstadt I
匹配。
我的实际Innenstadt II
列包含的内容多于我在此处显示的内容 - 各种地区名称都会出现问题。
如何获得完全匹配?
答案 0 :(得分:2)
我这样做:
{ dist: df[df.district == dist] for dist in df.district.unique() }
但是再次使用MultiIndex可能会更好:
df.set_index(['district', 'subdistrict'], inplace=True)
这与dict
解决方案非常相似,但下游处理可能会更快。
答案 1 :(得分:2)
我认为你需要循环中的boolean indexing
:
d_set = district_df['district'].unique()
for district in d_set:
district_table = district_df[district_df['district'] == district]
print (district_table)
district subdistrict
0 Bergen-Enkheim Bergen-Enkheim
district subdistrict
1 Bornheim/Ostend Bornheim
2 Bornheim/Ostend Ostend
district subdistrict
3 Harheim Harheim
district subdistrict
4 Innenstadt I Altstadt
5 Innenstadt I Bahnhofsviertel
6 Innenstadt I Gallus
district subdistrict
7 Innenstadt II Bockenheim
8 Innenstadt II Westend-Nord
如果dict
需要DataFrames
更好,则转换为groupby
对象:
a = dict(tuple(district_df.groupby('district')))
print (a['Innenstadt I'])
district subdistrict
4 Innenstadt I Altstadt
5 Innenstadt I Bahnhofsviertel
6 Innenstadt I Gallus