【问题标题】:how to modify grouped data in pandas如何修改熊猫中的分组数据
【发布时间】:2022-12-01 16:52:31
【问题描述】:

我想修改熊猫中的分组数据。我写了一个不起作用的简码。不幸的是,当我使用gr.get_group('Audi')时,在循环之外,数据保持不变。如何修改分组的 daraframes 以及如何稍后从分组数据返回到 dataframes。


import pandas as pd
import numpy as np

d = {'car' : ["Audi", "Audi", "Audi", "BMW", "BMW", "BMW", "FIAT", "FIAT", "FIAT", "FIAT"],
    'year' : [2000, 2001, 1995, 1992, 2003, 2003, 2011, 1982, 1997, 2002]}

df = pd.DataFrame.from_dict(d)
df['new'] = np.nan

gr = df.groupby('car')

for key, val in gr:
    val.loc[val['year']<2000, 'new'] = f'new {key}'

gr.get_group('car')

我想使用这种方法,因为在每个数据框中我想使用不同的方法来设置 new

例如,对于奥迪,它通常会添加一个变量,而对于宝马,我想使用地图功能

for key, val in gr:
    if key == 'Audi':
        val.loc[val['year']<2000, 'new'] = f'new {key}'
    elif key == 'BMW':
        pass
        #  here another method
    elif key == 'FIAT'
        #  here another metod
    else:
        val.loc[val['year']<2000, 'new'] = 'UNKNOW'

最后我想得到一个像数据框一样的表,但有填充的列`new

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试 pd.concat val 在每个 for 循环中使用 the df_new 如下所示

    import pandas as pd
    import numpy as np
    
    d = {'car' : ["Audi", "Audi", "Audi", "BMW", "BMW", "BMW", "FIAT", "FIAT", "FIAT", "FIAT"],
        'year' : [2000, 2001, 1995, 1992, 2003, 2003, 2011, 1982, 1997, 2002]}
    
    df = pd.DataFrame.from_dict(d)
    df['new'] = np.nan
    df_new = pd.DataFrame()
    gr = df.groupby('car')
    
    for key, val in gr:
        print(key,val)
        if key == 'Audi':
            val.loc[val['year']<2000, 'new'] = f'new {key}'
        elif key == 'BMW':
            pass
            #  here another method
        elif key == 'FIAT':
            pass#  here another metod
        else:
            val.loc[val['year']<2000, 'new'] = 'UNKNOW'
        df_new = pd.concat([df_new, val])
    

    也许您也可以使用 df.itertuples 或我目前不知道的其他方法来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2022-06-22
      • 2021-12-29
      • 2020-11-09
      • 1970-01-01
      • 2018-02-08
      • 2017-02-09
      • 2017-10-17
      相关资源
      最近更新 更多