如何根据自身内容重新排序Pandas数据框
我有一个数据框,看起来是这样的:
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_index
和 unstack
方法
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)
结果是一样的