繁体   English   中英

Python:列命名并将两个数据框合并为一个

[英]Python: Naming of columns and merging two data frames into one

我想给我的示例数据列名称。 我希望这些列以目标函数及其决策变量命名,如下所示:f_1、f_2、h、b、l、t

样本数据:

sampler = qmc.LatinHypercube(d=4)

u_bounds = np.array([5.0, 5.0, 10.0, 10.0])
l_bounds = np.array([0.125, 0.125, 0.1, 0.1])
data = sampler.lhs_method(100)*(u_bounds-(l_bounds)) + (l_bounds)

列名来自哪里的优化问题:

def objectives (h,b,l,t):
    f1 = 1.10471*(h**2)*l + 0.04811*t*b*(14.0 + l)
    f2 = 2.1952 / (t**3)*b
    return f1,f2

为目标函数塑造数据:

y=np.zeros((100,2))   
for i in range(np.shape(data)[0]):
    y[i,0], y[i,1] = objectives(data[i,0], data[i,1], data[i,2], data[i,3])

我尝试了什么:

df = pd.DataFrame(data=data)
df.columns = ["h", "b", "l", "t"]

df.head()

frames = [df, y,]

result = pd.concat(frames)

这个错误是这样的: TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid

那么对于这个问题,你会推荐什么样的修改呢? 现在看来,这两个数据帧的当前形式不兼容。

就像错误所说的那样,您不能将数据框与concat数组连接起来。

因此,您应该将 y(numpy 数组)转换为 df 以与另一个 df 连接:

y = np.zeros((2,2)) 
y = pd.DataFrame(y) #this

pd.concat([df, y])

重现错误:

在此处输入图像描述

解决:

在此处输入图像描述

如果您希望它们“并排”,您可以执行以下操作:

df = pd.DataFrame(data=data)
df.columns = ["h", "b", "l", "t"]

# Adding new columns from variable y
df['f1'] = y[:,0]
df['f2'] = y[:,1]

# Quick check
df.head()

DataFrames 表示表格数据。 您可以将它们视为列列表,其中每列都有一个名称(f1、f2、h、b...),并且可以通过my_dataframe['column_name']访问/修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM