[英]Ensure adjacent column values using pandas pivot_table
我有一個數據框:
index col1 col2 col3
0 X A 123
1 X A 456
2 X B 654
3 X B 321
4 X A 111
我正在嘗試使用數據pivot_table
將此df轉換為以下格式:
index A B
0 123 654
1 456 321
2 111 NaN
我正在嘗試使用... pivot_table(index=df.index, columns=['col2'], values='col3')
,但這最終以以下狀態結束:
index A B
0 123 NaN
1 456 NaN
2 111 NaN
3 NaN 654
4 NaN 321
如何避免這種情況?
仍在使用pivot_table
pd.pivot_table(df,index=df.groupby('col2').cumcount(),columns='col2',values='col3')
Out[163]:
col2 A B
0 123.0 654.0
1 456.0 321.0
2 111.0 NaN
您的pivot_table
實現是正確的。
要合並您要查詢的記錄(在數據pivot_table
,首先需要使用數據pivot_table
,然后使用apply
從數據pivot_table
刪除NaN,如下所示 :
# Perform spreadsheet-style pivot table
df2 = df.pivot_table(index=df.index, columns=['col2'], values='col3')
print df2
# Drop NaNs to shift rows up and combine records
df1 = df2.apply(lambda x: pd.Series(x.dropna().values))
print (df1)
輸出為:
# df2
col2 A B
0 123.0 NaN
1 456.0 NaN
2 NaN 654.0
3 NaN 321.0
4 111.0 NaN
# df1
col2 A B
0 123.0 654.0
1 456.0 321.0
2 111.0 NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.