使用循环或列表理解制作多个pandas数据帧

时间:2014-02-22 03:04:22

标签: python loops pandas dataframe

我有一个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

希望这是有道理的。

1 个答案:

答案 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

注意:大部分时间你不需要这样做,申请,聚合和转换是你的朋友!