簡體   English   中英

Dataframe PANDAS Python格式數據

[英]Dataframe PANDAS Python format data

我在 dataframe 中有這種格式的數據,

在此處輸入圖像描述

我想有以下格式的數據,在此處輸入圖像描述

任何人都可以幫助如何獲得這種格式。

The pivot function will do the job: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html

您可以根據預期結果定義索引和列:

df.pivot(index=["lev1", "lev2"], columns=["lev3"],values="values")

我分享的鏈接上有一些有用的例子。 我希望這可以解決您的問題。

# create a demo sample
nan = np.nan
data = [{0: 'a', 1: 1.0, 2: 'g'},
 {0: 'b', 1: 2.0, 2: '7'},
 {0: 'c', 1: 3.0, 2: nan},
 {0: 'd', 1: 4.0, 2: nan},
 {0: 'e', 1: 5.0, 2: nan},
 {0: 'f', 1: 6.0, 2: nan},
 {0: nan, 1: nan, 2: nan},
 {0: 'a', 1: 8.0, 2: 'g'},
 {0: 'b', 1: 9.0, 2: '14'},
 {0: 'c', 1: 10.0, 2: nan},
 {0: 'd', 1: 11.0, 2: nan},
 {0: 'e', 1: 12.0, 2: nan},
 {0: 'f', 1: 13.0, 2: nan}]
df = pd.DataFrame(data)

創建一個組標簽來定位記錄,然后使用unstackinner index轉換為列。

# set a record group tag
cond = df[0] == 'a'
df['tag'] = np.where(cond, 1, 0).cumsum()

# set column 0 as column name
dfn = (df.set_index(['tag', 0])[1].unstack()
    .dropna(how='all',axis=1))

# get column 2's value, with every group_tag's second row
dfn['g'] = df.groupby('tag').apply(lambda x: x[2].iloc[1])

結果:

print(df)

          0     1    2  tag
    0     a   1.0    g    1
    1     b   2.0    7    1
    2     c   3.0  NaN    1
    3     d   4.0  NaN    1
    4     e   5.0  NaN    1
    5     f   6.0  NaN    1
    6   NaN   NaN  NaN    1
    7     a   8.0    g    2
    8     b   9.0   14    2
    9     c  10.0  NaN    2
    10    d  11.0  NaN    2
    11    e  12.0  NaN    2
    12    f  13.0  NaN    2

print(dfn)

    0      a    b     c     d     e     f   g
    tag                                      
    1    1.0  2.0   3.0   4.0   5.0   6.0   7
    2    8.0  9.0  10.0  11.0  12.0  13.0  14

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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