首页 > 解决方案 > 将熊猫列值转换为列

问题描述

我有一个包含列值的数据框,我想将其与现有列组合。这是一个示例数据框和所需的结果。有什么想法可以创建 result_df 吗?

import pandas as pd

d = {'city' : ['New York','New York', 'Shanghai', 'Shanghai', 'Boston', 'Boston'],
 'rooms': ["1","2","1","2","1", "2"], 'rent': [500, 1000, 1500, 2000, 2500 ,3000]}

df = pd.DataFrame(data = d)

result = {'city' : ['New York', 'Shanghai','Boston'],
   'rent_1': [500, 1500, 2500], 'rent_2': [1000, 2000, 3000]}

result_df = pd.DataFrame(data = result)

标签: pythonpandas

解决方案


try pd.crosstab with .add_prefix

df1 = pd.crosstab(df['city'],df['rooms'],
            df['rent'],aggfunc=lambda x : x)\
            .add_prefix('rent_')\
            .reset_index().rename_axis("",axis=1)

print(df1)

       city  rent_1  rent_2
0    Boston    2500    3000
1  New York     500    1000
2  Shanghai    1500    2000

or use .unstack()

df.set_index(['city','rooms']).unstack(1).add_prefix('rent_').droplevel(0,1)\
   .reset_index().rename_axis("",axis=1)


  city  rent_1  rent_2
0    Boston    2500    3000
1  New York     500    1000
2  Shanghai    1500    2000

推荐阅读