Issue
I would like to give my sample data column names. I'd like the columns be named after objective functions and their decision variables like this: f_1, f_2, h, b, l, t
Sample data:
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)
Optimisation problem where the column names come from:
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
Shaping the data for the objective functions:
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])
What I tried:
df = pd.DataFrame(data=data)
df.columns = ["h", "b", "l", "t"]
df.head()
frames = [df, y,]
result = pd.concat(frames)
This errors like this: TypeError: cannot concatenate object of type '<class 'numpy.ndarray'>'; only Series and DataFrame objs are valid
So what kind of modifications would you recommend for this problem? Now it looks like these two data frames are not compatible in their current form.
Solution
If you want them "side by side", you can do something like:
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 represent tabular data. You can see them as a list of columns where each column has a name (f1, f2, h, b...) and can be accessed/modified through my_dataframe['column_name']
.
Answered By - maggle
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.