[英]Convert multiple columns to one row (Pandas/Numpy)
我想將多個屬性的月度數據組合成一個包含整年數據的行。 將多個時間序列行與Pandas組合成一行也是一個類似的問題。 如果我幾年的月份完成,這個問題的解決方案對我有用,但對於我的大部分數據,個別年份的月份都會丟失。 如果只有12月的數據,則解決方案將填充第一列而不是第12列。
例如,我只使用1月到6月。
以下是我的數據示例:
ex_df = pd.DataFrame({'year': [1966, 1966, 1966, 1967, 1967, 1967], 'month': [1, 2, 6, 2, 3, 4], 'A': [10, 5, 0, np.nan, 25, 0], 'B': [-100, -80, 100, -120, 0, 60], 'C': [-1, -18, -2, -11, 10, 6]})
這是最佳解決方案:
sol_df = pd.DataFrame({'year': [1966, 1967], 'A1': [10, np.nan], 'A2': [5, np.nan],'A3': [np.nan, 25],'A4': [np.nan, 0],'A5': [np.nan, np.nan],'A6': [0, np.nan],'B1': [-100, np.nan], 'B2': [-80, -120], 'B3': [np.nan, 0], 'B4': [np.nan, 60], 'B5': [np.nan, np.nan], 'B6': [100, np.nan],'C1': [-1, np.nan], 'C2': [-18, -11], 'C3': [np.nan, 10], 'C4': [np.nan, 6], 'C5': [np.nan, np.nan], 'C6': [-2, np.nan] })
A,B,C是屬性,數字對應於月份。
使用:
df = ex_df.set_index(['year','month']).unstack()
df.columns = ['{}{}'.format(x, y) for x, y in df.columns]
df = df.reset_index()
print (df)
year A1 A2 A3 A4 A6 B1 B2 B3 B4 B6 C1 C2 \
0 1966 10.0 5.0 NaN NaN 0.0 -100.0 -80.0 NaN NaN 100.0 -1.0 -18.0
1 1967 NaN NaN 25.0 0.0 NaN NaN -120.0 0.0 60.0 NaN NaN -11.0
C3 C4 C6
0 NaN NaN -2.0
說明 :
set_index
和unstack
的重塑 Multiindex
reset_index
從索引創建列
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.