gpt4 book ai didi

python - 将不同 DataFrame 中的元素收集到数组中

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:03 27 4
gpt4 key购买 nike

我喜欢使用嵌套数据结构,现在我正在尝试了解如何使用 Pandas

这是一个玩具模型:

a=pd.DataFrame({'x':[1,2],'y':[10,20]})
b=pd.DataFrame({'x':[3,4],'y':[30,40]})
c=[a,b]

现在我想得到:

sol=np.array([[[1],[3]],[[2],[4]]])

我有一个想法,将 sol[0]sol[1] 获取为:

s0=np.array([item[['x']].ix[0] for item in c])
s1=np.array([item[['x']].ix[1] for item in c])

但是为了获得 sol,我会运行索引,但我不认为它真的是 pythonic...

最佳答案

看起来您只需要 ab 中的 x 列。您可以使用pd.concat将两个Series(或DataFrame)连接成一个新的DataFrame。 :

In [132]: pd.concat([a['x'], b['x']], axis=1)
Out[132]:
x x
0 1 3
1 2 4

[2 rows x 2 columns]

现在,如果你想要一个 numpy 数组,请使用 values attribute :

In [133]: pd.concat([a['x'], b['x']], axis=1).values
Out[133]:
array([[1, 3],
[2, 4]], dtype=int64)

如果您想要一个与 sol 形状相同的 numpy 数组,请使用 reshape method :

In [134]: pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1)
Out[134]:
array([[[1],
[3]],

[[2],
[4]]], dtype=int64)

In [136]: np.allclose(pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1), sol)
Out[136]: True

关于python - 将不同 DataFrame 中的元素收集到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168405/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com