将数据框列值转换为新列

Kor*_*ose 6 python dataframe pandas

我有一个包含一些数据的数据框,我想要转换,以便一列的值定义新列.

>>> 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
Run Code Online (Sandbox Code Playgroud)

列的值A应为新数据帧的列名.转换的结果应如下所示:

   a  b
0  6  8
1  7  9
Run Code Online (Sandbox Code Playgroud)

到目前为止我想出的并没有完全发挥作用:

>>> 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
Run Code Online (Sandbox Code Playgroud)

除了这是不正确的,我想无论如何可能还有更有效的方法.我真的很难理解如何处理大熊猫的事情.

har*_*pan 5

你快到了,但你需要.values作为数组列表,然后提供列名。

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

输出:

    a   b
0   6   8
1   7   9
Run Code Online (Sandbox Code Playgroud)