【问题标题】:making multiple pandas data frames using a loop or list comprehension使用循环或列表理解制作多个熊猫数据框
【发布时间】:2014-03-23 19:58:15
【问题描述】:

我有一个 Python 数据框,我想将它按行细分为 32 个不同的切片(想象一个大数据集按行切分成 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

希望这是有道理的。

【问题讨论】:

    标签: python loops pandas dataframe


    【解决方案1】:

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

    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
    

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

    【讨论】:

    • 感谢您的意见,非常感谢。我想写一些有趣的东西让你知道我非常感激,但是,唉,我的幽默感有点黑暗,我不想冒犯堆栈溢出的人。
    • @ChaseCB 哈!我不会被冒犯的!您可以接受:meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 2013-04-03
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多