Pandas中group+apply应用

import pandas as pd

dict_1 = {"time": ["2019-11-02", "2019-11-03", "2019-11-04", "2019-11-05",
                   "2019-12-02", "2019-12-03", "2019-12-04", "2019-12-05"],
          "pos": ["A", "A", "C", "D", "E", "E", "G", "H"],
          "value1": [10, 20, 30, 40, 50, 60, 70, 80],
          "value2": [100, 200, 300, 400, 500, 600, 700, 800],
          "value3": [50, 20, 30, 90, 50, 60, 80, 80],
          "value4": [10, 30, 90, 40, 60, 60, 70, 80]}

df_1 = pd.DataFrame(dict_1, columns=["time", "pos", "value1", "value2", "value3", "value4"])
print("\n", "df_1", "\n", df_1, "\n")

#第一种方式
def get_f5(x):
    print("x的结果是:\n",x) #查看x的类型
    print("x的值是:\n",x.values) #查看x的类型
    print("x转为list是:\n",x.values.tolist()) #查看x的类型
    print("最终输出:\n",dict(x.values.tolist())) #查看x的类型
    return dict(x.values.tolist())

data = df_1.groupby("pos")[["value1","value2"]].apply(get_f5)
print("第一种方式:",data)
# # 第二种方式
dict_map = df_1.groupby('pos')[['value1','value2']].apply(lambda g: dict(g.values.tolist()))
print("第二种方式:",dict_map)
dict_result = df_1.groupby('pos')[['value1','value2']].apply(lambda g: dict(g.values.tolist())).to_dict()
print("最终结果:",dict_result)
df_1结果
image.png
get_f5方法里的打印
image.png
两种方式的运行结果
image.png
最终需要的格式
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容