社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Will Wild • 5 年前 • 1404 次点击  

我有一个数据帧,列名为 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
 
1404 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Datanovice
Reply   •   1 楼
Datanovice    5 年前

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

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    5 年前

使用 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