這可能是更容易使用NumPy的第一計算值,然後將結果加載到數據幀:
import numpy as np
import pandas as pd
alphaRange = np.arange(0.01, 0.26, 0.01)
epsilonRange = np.arange(0.01, 0.11, 0.01)
X, Y = np.meshgrid(alphaRange, epsilonRange)
vals = X+Y
print(vals.shape)
df = pd.DataFrame(vals, index=epsilonRange, columns=alphaRange)
print(df)
編輯:PaulH是正確的 - 浮動不好好列或索引標籤,因爲他們可能很難正確引用。 (檢查花車平等帶來了浮動代表問題)。因此,這將是更明智alpha
和epsilon
數據幀列:
df = pd.DataFrame({'vals':vals.ravel()},
index=pd.MultiIndex.from_product([alphaRange, epsilonRange],
names=['alpha', 'epsilon']))
df.reset_index(inplace=True)
print(df.head())
產生
alpha epsilon vals
0 0.01 0.01 0.02
1 0.01 0.02 0.03
2 0.01 0.03 0.04
3 0.01 0.04 0.05
4 0.01 0.05 0.06
[5 rows x 3 columns]
pd.MultiIndex.from_product被加入熊貓0.13.1。對於較早版本的熊貓,您可以使用:
def from_product(iterables, sortorder=None, names=None):
from pandas.tools.util import cartesian_product
product = cartesian_product(iterables)
return pd.MultiIndex.from_arrays(product, sortorder=sortorder,
names=names)
df = pd.DataFrame({'vals':vals.ravel()},
index=from_product([alphaRange, epsilonRange],
names=['alpha', 'epsilon']))
浮動指數仍然不穩定/皺起了眉頭? –
@PaulH:謝謝,保羅。我想你是對的;浮動指數可能有問題。我發佈了一個替代方案。 – unutbu
@unutbu我不太明白你的例子中的'vals = X + Y'行。 'alphaRange'和'epsilonRange'用於索引,這些值不是兩者的簡單組合(例如總和)。所以要寫這些值,我需要能夠通過'(alpha,epsilon)'來索引數組。 – clstaudt