簡體   English   中英

將數據框列值轉換為新列

[英]Convert dataframe column values to new columns

我有一個包含一些數據的數據框,我想要轉換,以便一列的值定義新列。

>>> import pandas as pd
>>> df = pd.DataFrame([['a','a','b','b'],[6,7,8,9]]).T
>>> df
   A  B
0  a  6
1  a  7
2  b  8
3  b  9

A的值應為新數據幀的列名。 轉換的結果應如下所示:

   a  b
0  6  8
1  7  9

到目前為止我想出的並沒有完全發揮作用:

>>> pd.DataFrame({ k : df.loc[df['A'] == k, 'B'] for k in df['A'].unique() })
     a    b
0    6  NaN
1    7  NaN
2  NaN    8
3  NaN    9

除了這是不正確的,我想無論如何可能還有更有效的方法。 我真的很難理解如何處理大熊貓的事情。

你幾乎就在那里,但你需要.values作為數組列表,然后提供列名。

pd.DataFrame(pd.DataFrame({ k : df.loc[df['A'] == k, 'B'].values for k in df['A'].unique() }), columns=df['A'].unique())

輸出:

    a   b
0   6   8
1   7   9

使用set_indexgroupbycumcount ,並unstack

(df.set_index(['A', df.groupby('A').cumcount()])['B']
   .unstack(0)
   .rename_axis([None], axis=1))

輸出:

   a  b
0  6  8
1  7  9

使用groupby的字典理解:

res = pd.DataFrame({col: vals.loc[:, 1].values for col, vals in df.groupby(0)})

print(res)

   a  b
0  6  8
1  7  9

暫無
暫無

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

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