如何解决将 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_molfrac
和mix_to_pmix
的输入的。
但是 pandas 对象有一个 .value
属性,它允许您访问底层的 numpy 数组。因此,使用 mix_in = mix.values
可能更好。
columns,values = df.columns,df.values
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。