python - 将 DataFrame 中的组堆叠在一起

标签 python pandas dataframe group-by pandas-groupby

我有一个带有重复索引和单列的 pandas df:

        value    
1     0.996957  
1     1.098198  
1     1.184518  
2     1.255916  
2     1.312393  

我想要做的是获得一个具有唯一索引的 df,以及每个索引作为列的不同值。 df 的最后一列将取决于出现次数最多的索引。

所以对于这个例子,我想要:

       1          2         3
1   0.996957   1.098198  1.184518 
2   1.255916   1.312393    NaN

到目前为止我所做的是有效的,但肯定可以通过索引改进分组并以某种方式通过组构建新的 df:

data = pd.DataFrame(columns=np.arange(df.groupby(df.index)\
                .count().value.max()))
for i in np.unique(df.index.values):
    data_points_i = pd.DataFrame(df.loc[i,:].value.values).transpose()
    data = pd.concat([data,data_points_i], axis = 0)
data.index = df.index.unique()

其中 df 是原始 df,而 data 是我最终得到的。如果您能帮助优化这段代码,我们将不胜感激。

最佳答案

设置索引 + unstack

df.set_index(df.groupby(level=0).cumcount(), append=True).unstack()['value']
              
          0         1         2
1  0.996957  1.098198  1.184518
2  1.255916  1.312393       NaN

关于python - 将 DataFrame 中的组堆叠在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375913/

相关文章:

python - 使用 python 根据日期条件删除行

python - openpyxl错误: 'str' object has no attribute 'BLACK'

python - 有没有办法在 Django 压缩机压缩标签中使用条件 IF 语句?

python - 使用蓝图将参数传递给 Flask 应用程序

python - pandas groupby 适用于系列,但不适用于选择整个数据框

r - 无法从 R 中的 data.frame 中索引数字向量

python - 无法启动 Selenium,遇到 DeprecationWarning 和 WebDriverException 错误

python - 使用 sort_values + head() 时如何包含匹配值

python - 将 Pandas 列转换为小时和分钟

python - 如何使用 Python(不使用 PySpark)将 pandas 数据框插入现有的 Hive 外部表?