根据索引号从列表中返回值

Dav*_*son 6 python pandas

我一直在努力寻找没有循环的熊猫解决方案:

输入:

df = pd.DataFrame({'A' : [[6,1,1,1], [1,5,1,1], [1,1,11,1], [1,1,1,20]]})

                A
0   [6, 1, 1, 1]
1   [1, 5, 1, 1]
2   [1, 1, 11, 1]
3   [1, 1, 1, 20]
Run Code Online (Sandbox Code Playgroud)

输出:

                A   B
0   [6, 1, 1, 1]    6
1   [1, 5, 1, 1]    5
2   [1, 1, 11, 1]   11
3   [1, 1, 1, 20]   20
Run Code Online (Sandbox Code Playgroud)

在过去一个小时左右的时间里,我尝试了很多不同的东西,我知道解决方案将是一个非常简单的单线。感谢您的帮助——今天不是我的蟒蛇日!

Shu*_*rma 5

你可以做一个简单的列表理解:

df['B'] = [s[i] for i, s in zip(df.index, df['A'])]
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想要对角线值:

df['B'] = np.diagonal([*df['A']])
Run Code Online (Sandbox Code Playgroud)
               A   B
0   [6, 1, 1, 1]   6
1   [1, 5, 1, 1]   5
2  [1, 1, 11, 1]  11
3  [1, 1, 1, 20]  20
Run Code Online (Sandbox Code Playgroud)