import numpy as np
import pandas as pd
df = pd.DataFrame({'Index': ['A', 'A', 'B', 'B', 'C'], 'Param1': [1, 3, 1, 4, 2],
'Param2': [2, 4, 3, np.nan, 4]}).set_index('Index')
print(df)
# Param1 Param2
# Index
# A 1 2.0
# A 3 4.0
# B 1 3.0
# B 4 NaN
# C 2 4.0
def fn(g):
return pd.Series(g.values.ravel())
res = df.groupby(df.index).apply(fn).unstack()
res.columns = ['Param1', 'Param2', 'Param3', 'Param4']
print(res)
# Param1 Param2 Param3 Param4
# Index
# A 1.0 2.0 3.0 4.0
# B 1.0 3.0 4.0 NaN
# C 2.0 4.0 NaN NaN
謝謝!這兩種方法通常都有效,但是在我的真實數據中,數據框中間有很多NaN。有沒有辦法讓它們「向左移動」?示例行A 1 Nan 2 3 Nan 4,更改爲A 1 2 3 4 Nan Nan – Greg
是的,您可以將'np.sort'添加到'return(pd.DataFrame(np.sort(x.values.ravel()) ))' – jezrael