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

固定DataFrame的坐标顺序?

如何解决固定DataFrame的坐标顺序?

我正在尝试制作一个DataFrame来存储从测量测试中获取的几个数据集。 数据具有8个维度(尺寸)以指定测试条件。 {'Machine','Year','Month','Compensation','Axis','SensorID','Pos(ition)'}。

当我从测试中制作一个DataFrame时,我发现尺寸是按字母顺序排列的,即: {'Axis','Compensation','Machine','Month','Pos','SensorID','Year'}。

因此,输出如下图所示。

dimensions forced into alphabetical order

为了便于理解数据,我想保留尺寸的初始顺序 {'Machine','Year','Month','Compensation','Axis','SensorID','Pos'}。

是否可以保留尺寸的初始顺序? 还是有更好的方法来处理这类高维数据?

Python代码如下所示。 例如,我从不同的机器上获得了3个数据,分别是“ MC_A”,“ MC_B”和“ MC_C”。 数据分别存储在DataArray'da','da2'和'da3'中。 为了创建一个存储它们的DataFrame,我使用了'merge'方法

import xarray as xr
import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px

x = np.linspace(0,1500,16)
y = np.random.random((1,1,6,len(x)))
y2 = np.random.random((1,len(x)))
y3 = np.random.random((1,len(x)))

da = xr.DataArray(y,dims=('Machine','Year','Month','Compensation','Axis','SensorID','Pos'),coords={'Machine':['MC_A'],'Year':['2020'],'Month':['Aug'],'Compensation':[1],'Axis':['X'],'SensorID':range(6),'Pos':x},name='val')

da2 = xr.DataArray(y2,coords={'Machine':['MC_B'],name='val')

da3 = xr.DataArray(y3,coords={'Machine':['MC_C'],name='val')

ds = xr.merge([da,da2,da3])
# print(da)
df = ds.to_dataframe()
# df.reorder_levels(['Machine','Errors','Pos'])

df

解决方法

1-您是否真的需要使用XArray?在您给出的示例中,您可以直接实例化DataFrame,然后将它们串联起来。

da = pd.DataFrame({'Machine':['MC_A'],'Year':['2020'],'Month': 'Aug'],'Compensation':[1],'Axis':['X'],'SensorID':range(6),'Pos':x})
...
ds = pd.concat([da,da1,da2])

2-如果这样做,则可以合并数据框而不是

df = pd.concat([da.to_dataframe(),da2.to_dataframe(),da3.to_dataframe()])

请注意,默认情况下,熊猫sort=False传递给concat

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