微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 Pandas DataFrame 转换为 numpy 数组但不一致

如何解决将 Pandas DataFrame 转换为 numpy 数组但不一致

我遇到了一个奇怪的不一致问题。所以我必须了解不可变和可变数据类型之间的区别。出于我的目的,我需要将我的 Pandas DataFrame 转换为 Numpy apply 操作并将其转换回来,因为我不想改变我的输入。

所以我转换如下:

mix=pd.DataFrame(array,columns=columns)
def mix_to_pmix(mix,p_tank):
    prevIoUs=0
    columns,mix_in=np.array(mix) #<---
    mix_in*=p_tank
    prevIoUs=0
    for count,val in enumerate(mix_in):
        mix_in[count]=val+prevIoUs
        prevIoUs+=val

    return pd.DataFrame(mix_in,columns=columns)

这工作得很好,但功能

columns,mix_in=np.array(mix)

似乎与案例不一致:

def to_molfrac(mix):
    columns,mix_in=np.array(mix)
    shape=mix_in.shape

    for i in range(shape[0]):
        mix_in[i,:]*=1/max(mix_in[i,:])
    for k in range(shape[1]-1,-1):
        mix_in[:,k]+=-mix_in[:,k-1]
    mix_in=mix_in/mix_in.sum(axis=1)[:,np.newaxis]
    return pd.DataFrame(mix_in,columns=columns)

我收到错误

ValueError: too many values to unpack (expected 2)

一个函数的输入是前一个函数输出。所以应该是一样的情况。

解决方法

没有例子是不可能理解to_molfracmix_to_pmix的输入的。 但是 pandas 对象有一个 .value 属性,它允许您访问底层的 numpy 数组。因此,使用 mix_in = mix.values 可能更好。

columns,values = df.columns,df.values

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。