如何根据自身内容重新排序Pandas数据框

0 投票
2 回答
43 浏览
提问于 2025-04-14 15:29

我有一个数据框,看起来是这样的:

The dataframe

        Value   Time Point  Sample Number
    0   6.9     T000        1
    1   3.45    T000        2
    2   0.159   T000        3
    3   2.933   T024        4
    4   2.9     T024        5
    5   1.88    T024        6

我想把它重新排列成这样:

The new dataframe

    Sample Number   1    2      3       4       5      6
             T000  6.9  3.45  0.159    NaN     NaN    NaN
             T024  NaN  NaN    NaN    2.933    2.9    1.88

新的数据框是由样本编号和时间点生成的索引组成的

这是我的代码:

import pandas as pd

data = [["6.9", "T000","1"],
        ["3.45", "T000","2"],
        ["0.159", "T000","3"],
        ["2.933", "T024","4"],
        ["2.9", "T024","5"],
        ["1.88", "T024","6"]] 
    
df_data = pd.DataFrame(data)
    
df_data.columns = ["Value", "Time Point", "Sample Number"]
    
df_data_new = pd.DataFrame(columns = df_data["Sample Number"], index = df_data["Time Point"].unique())

我不太确定怎么把df_data中的数据填到新的数据框里

2 个回答

3

使用 df.pivot,

df_data.pivot(index='Time Point', columns='Sample Number', values='Value')

输出结果:

Sample Number    1     2      3      4    5     6
Time Point                                       
T000           6.9  3.45  0.159    NaN  NaN   NaN
T024           NaN   NaN    NaN  2.933  2.9  1.88
2

代码

使用 set_indexunstack 方法

out = df_data.set_index(['Time Point', 'Sample Number'])['Value'].unstack().rename_axis(None)

输出结果:

Sample Number    1     2      3      4    5     6                                      
T000           6.9  3.45  0.159    NaN  NaN   NaN
T024           NaN   NaN    NaN  2.933  2.9  1.88

或者可以使用 pivot 方法

out = df_data.pivot(index='Time Point', columns='Sample Number', values='Value').rename_axis(None)

结果是一样的

撰写回答