簡體   English   中英

使用熊貓Pivot_table確保相鄰列的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM