我有這個代碼:
import math
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
sens_fac = [0.8, 1, 1.2]
A = 13;
B = 5;
C = 7/2;
D = 3*1.2;
par = [A,B,C,D]
data = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))
term1 = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))
term2 = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))
term3 = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))
term4 = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))
sol = []
for i in range(len(par)):
factors = [1, 1, 1, 1]
for j in range(len(sens_fac)):
factors[i] = sens_fac[j]
print(factors)
x=25
t1 = np.log(x)**math.sin(x/(A*factors[0]))
t2 = (B*factors[1])*math.sqrt(x)
t3 = (factors[2]*C)**math.exp(1/x)
t4 = x/(factors[3]*D)*2
res = t1 t2 t3 t4
term1[i][j] = t1
term2[i][j] = t2
term3[i][j] = t3
term4[i][j] = t4
data[i][j] = res
print(term1)
print(term2)
print(term3)
print(term4)
dataframes term1, term2, ...termX僅在 FOR 回圈的特定步驟中有所不同。例如,term1僅當 , 時才具有不同的值i=0,但對于i=1,i=2或是相同的i=3。另一方面,term2當有不同的值時,i=1但在其余的迭代中保持相同的值。實際上,您可以在 DataFrame 中看到:
term1 =
0 1 2 3
0 2.195296 2.995886 2.995886 2.995886
1 2.995886 2.995886 2.995886 2.995886
2 3.216978 2.995886 2.995886 2.995886
term2 =
0 1 2 3
0 25.0 20.0 25.0 25.0
1 25.0 25.0 25.0 25.0
2 25.0 30.0 25.0 25.0
我想獲得這樣的東西:
term1 =
0
0 2.195296
1 2.995886
2 3.216978
或者term2 =
0
0 20.0
1 25.0
2 30.0
我該怎么做?
uj5u.com熱心網友回復:
您可以洗掉只有一個唯一元素的列(保留具有多個唯一元素的列):
term1.loc[:, term1.nunique().gt(1)].squeeze()
輸出:
0 2.195296
1 2.995886
2 3.216978
Name: 0, dtype: float64
注意。您可以使用squeeze將唯一匹配列轉換為系列,從而能夠在操作中使用它們而不必擔心索引對齊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476183.html
上一篇:如何調整for回圈的重復?
