将熊猫数据框转换为其他格式 - python

我有一个这样的数据框

             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:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = 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…