Py学习  »  Python

如何从重复的obeservations创建新列,并在Pandas数据帧中使用Python转换相关数据?

Will Wild • 4 年前 • 656 次点击  

我有一个数据帧,列名为 Stat 有重复的观察结果。这个 Value 斯达 同一行中的列。如何创建新列 name loca IDnu 同时将他们各自的数据从上述 价值

我所拥有的:

     Stat | Value
---------------------
0  | name |   cobras
1  | loca |   DC
2  | IDnu |   2
3  | name |   pythons
4  | loca |   LA
5  | IDnu |   1

我想要的:

   name |loca| IDnu
---------------------
cobras  | DC | 2
pythons | LA | 1
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54634
 
656 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Datanovice
Reply   •   1 楼
Datanovice    4 年前

我们可以将值聚合到一个列表中,然后将其传递到字典中以创建新的数据帧。

new_df = pd.DataFrame(df.groupby("Stat")["Value"].agg(list).to_dict())
# your column order.
cols = df['Stat'].unique()

print(new_df[cols])
      name loca IDnu
0   cobras   DC    2
1  pythons   LA    1
ansev
Reply   •   2 楼
ansev    4 年前

使用 DataFrame.pivot_table 为了得到索引 GroupBy.cumcount

new_df = (df.pivot_table(index=df.groupby('Stat').cumcount(),
                         columns='Stat',
                         values='Value',
                         aggfunc=''.join)
             .rename_axis(columns=None)
             .sort_index(ascending=False ,axis=1)
         )
print(new_df)

输出

      name loca IDnu
0   cobras   DC    2
1  pythons   LA    1