修改DataFram中的行

2024-10-01 17:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个示例数据帧,如下所示:

items_0_trialAreas_0_id   items_0_trialAreas_0_name    items_1_trialAreas_0_id     items_1_trialAreas_0_name    items_2_trialAreas_0_id     items_2_trialAreas_0_name .....
    1                              it1                           2                             it2                       3                             it3 

我想修改我的数据帧,使所有的项目\u id在一列下,所有的项目\u name在一列下。你知道吗

像这样:

item_trialAreas_ids      item_trialAreas_names
    1                           it1
    2                           it2
    3                           it3
   ...                          ...

Tags: 数据项目nameidids示例namesitems
2条回答

首先创建示例数据帧:

import pandas as pd

rows = [1, 'it1', 2, 'it2', 3, 'it3']
cols = ['items_0_trialAreas_0_id', 'items_0_trialAreas_0_name', 'items_1_trialAreas_0_id', 'items_1_trialAreas_0_name', 'items_2_trialAreas_0_id', 'items_2_trialAreas_0_name']

df = pd.DataFrame(rows).T
df.columns = cols

然后添加:

df1 = df.iloc[:,::2].T.reset_index().drop('index', axis=1)
df2 = df.iloc[:,1::2].T.reset_index().drop('index', axis=1)

df_final = pd.concat([df1, df2], axis=1)
df_final.columns = ['item_trialAreas_ids', 'item_trialAreas_names']

输出:

  item_trialAreas_ids item_trialAreas_names
0                   1                   it1
1                   2                   it2
2                   3                   it3

使用^{}

new_df =(pd.wide_to_long(df.reset_index(),['item_id','item_name'],
                         j='n',i='index',sep = '_')
           .reset_index(drop=True)
           .rename(columns = {'item_id':'items_id','item_name':'item_names'}) )

print(new_df)

输出

  items_ids item_names
0       1.0        it1
1       2.0        it2
2       3.0        NaN
3       NaN        it3

初始测向:

print(df)
   item_id_1 item_name_1  item_id_2 item_name_2  item_id_3 item_name_4
0          1         it1          2         it2          3         it3

相关问题 更多 >

    热门问题