我有一个Python数据框,我想在32个不同的切片中按行BUT进行细分(想想一个由行切成32个较小数据集的大数据集)。我可以用这种方式手动划分数据帧:
df_a = df[df['Type']=='BROKEN PELVIS']
df_b = df[df['Type']=='ABDOMINAL STRAIN']
我假设有更多的Pythonic表达可能有人想分享。我正在寻找以下内容:
for i in new1:
df_%s= df[df['#RIC']=='%s'] , %i
希望这是有道理的。
答案 0 :(得分:3)
在这种情况下,我认为将DataFrame存储在python字典中更为pythonic:
injuries = {injury: df[df['Type'] == injury] for injury in df['Type'].unique()}
injuries['BROKEN PELVIS'] # is the same as df_a above
大多数情况下,您不需要创建新的DataFrame但可以使用groupby(这取决于您接下来要做的事情),请参阅http://pandas.pydata.org/pandas-docs/stable/groupby.html:
g = df.groupby('Type')
更新:实际上有一种方法get_group
可以访问这些:
In [21]: df = pd.DataFrame([['A', 2], ['A', 4], ['B', 6]])
In [22]: g = df.groupby(0)
In [23]: g.get_group('A')
Out[23]:
0 1
0 A 2
1 A 4
注意:大部分时间你不需要这样做,申请,聚合和转换是你的朋友!