使用循环或列表理解创建多个 pandas 数据框

Cha*_* CB 1 python loops dataframe pandas

我有一个 Python 数据框,我想按行细分,但分成 32 个不同的切片(想象一个大数据集按行切成 32 个较小的数据集)。我可以通过这种方式手动划分数据框:

df_a = df[df['Type']=='BROKEN PELVIS']

df_b = df[df['Type']=='ABDOMINAL STRAIN']
Run Code Online (Sandbox Code Playgroud)

我假设有人可能想分享一个更加Pythonic 的表达式。我正在寻找类似的东西:

for i in new1:
    df_%s= df[df['#RIC']=='%s'] , %i
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的。

And*_*den 5

在这种情况下,我认为将 DataFrame 存储在 python 字典中更符合 Python 风格:

\n\n
injuries = {injury: df[df[\'Type\'] == injury] for injury in df[\'Type\'].unique()}\n\ninjuries[\'BROKEN PELVIS\']  #\xc2\xa0is the same as df_a above\n
Run Code Online (Sandbox Code Playgroud)\n\n

大多数时候你不需要创建一个新的DataFrame,但可以使用groupby(这取决于你接下来要做什么),请参阅http://pandas.pydata.org/pandas-docs/stable/groupby .html

\n\n
g = df.groupby(\'Type\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:实际上有一种方法get_group可以访问这些:

\n\n
In [21]: df = pd.DataFrame([[\'A\', 2], [\'A\', 4], [\'B\', 6]])\n\nIn [22]: g = df.groupby(0)\n\nIn [23]: g.get_group(\'A\')\nOut[23]:\n   0  1\n0  A  2\n1  A  4\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:大多数时候你不需要这样做,应用、聚合和转换就是你的朋友!

\n