Python pandas,将数据帧转换为多索引';数据帧
我有一个Python pandas,将数据帧转换为多索引';数据帧,python,pandas,numpy,multidimensional-array,dataframe,Python,Pandas,Numpy,Multidimensional Array,Dataframe,我有一个pandas.DataFrame,我想把它转换成multi-indexedpandas.DataFrame import numpy import pandas import itertools xs = numpy.linspace(0, 10, 100) ys = numpy.linspace(0, 0.1, 20) zs = numpy.linspace(0, 5, 200) def func(x, y, z): return x * y / z vals = lis
pandas.DataFrame
,我想把它转换成multi-index
edpandas.DataFrame
import numpy
import pandas
import itertools
xs = numpy.linspace(0, 10, 100)
ys = numpy.linspace(0, 0.1, 20)
zs = numpy.linspace(0, 5, 200)
def func(x, y, z):
return x * y / z
vals = list(itertools.product(xs, ys, zs))
result = [func(x, y, z) for x, y, z in vals]
# Original DataFrame.
df = pandas.DataFrame(vals, columns=['x', 'y', 'z'])
df = pandas.concat((pandas.DataFrame(result, columns=['result']), df), axis=1)
# I want to turn `df` into this `df2`.
index = pandas.MultiIndex.from_tuples(vals, names=['x', 'y', 'z'])
df2 = pandas.DataFrame(result, columns=['result'], index=index)
注意,在这个例子中,我创建了我想要的和我拥有的
因此,IRL我将从df
开始,并希望将其转换为df2
(并且无法访问vals
和result
),我如何做到这一点?您需要:
如果需要比较两个数据帧
,需要将NaN
替换为相同的值,否则得到False
:
print (df.set_index(['x','y','z']).eq(df2).all())
result False
dtype: bool
print (np.nan == np.nan)
False
print (df.fillna(1).set_index(['x','y','z']).eq(df2.fillna(1)).all())
result True
dtype: bool
对于非数值,我们可以这样做吗?像索引
x
和y
列中第一个值之后的所有公共值都有空格吗?@MurtazaHaji-你认为x,y
下的空字符串是答案吗?这只是为了展示
print (df.set_index(['x','y','z']).eq(df2).all())
result False
dtype: bool
print (np.nan == np.nan)
False
print (df.fillna(1).set_index(['x','y','z']).eq(df2.fillna(1)).all())
result True
dtype: bool