我有一个这样的数据框
col1 col2 col3 col4
id Category
a blue 4 1 3 0
red 1 0 0 4
b red 0 1 8 5
可以使用以下代码制作
df = pd.DataFrame({ 'id': ['a','a','b'],'Category': ['red','blue','red'], 'col1': [1,4,0], 'col2': [0,1,1],'col3' : [0,3,8], 'col4': [4,0,5]})
sum_df = df.groupby(['id','Category']).agg({'col1': 'sum', 'col2': 'sum','col3': 'sum', 'col4': 'sum'})
我希望输出看起来像这样
id red_col1 red_col2 red_col3 red_col4 blue_col1 blue_col2 blue_col3 blue_col4
0 a 1 0 0 4 4.0 1.0 3.0 0.0
1 b 0 1 8 5 NaN NaN NaN NaN
我希望每个id
在一行中都是唯一的,并将值汇总到相应的列中。数据集中有1000个ID,类别也有1000个。如果某列没有与之关联的值,则该列应为空白,即None
。
参考方案
使用DataFrame.unstack
,然后重命名列:
new_df = df.unstack('Category')
new_df.columns = [f'{color}_{col}' for col, color in new_df.columns]
new_df=new_df.sort_index(axis=1).reset_index()
print(new_df)
id blue_col1 blue_col2 blue_col3 blue_col4 red_col1 red_col2 \
0 a 4.0 1.0 3.0 0.0 1.0 0.0
1 b NaN NaN NaN NaN 0.0 1.0
red_col3 red_col4
0 0.0 4.0
1 8.0 5.0
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。
Python:传递记录器是个好主意吗? - python我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…