回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我为一个相当笨拙的标题道歉,我只是从我的具体问题中得到了更一般的,我认为这是问题的核心。简单地说,我有一个数据帧和一个与列数或行数相同长度的列表。我想用列表中的相应值替换dataframe中的<code>notnull</code>值。在</p>
<p>示例如下:
输入数据帧:</p>
<pre><code> a b c d
a 0.547825 NaN NaN 0.950158
b NaN 0.663845 0.529115 NaN
c NaN NaN NaN 0.685002
d NaN 0.791249 0.574452 0.734804
</code></pre>
<p>输入列表:<code>[1, 2, 3, 4]</code></p>
<p>期望输出:</p>
^{pr2}$
<p>这是我当前的代码:</p>
<pre><code>frame = pd.DataFrame(np.random.rand(4,4),index=['a','b','c','d'], columns=['a','b','c','d'])
frame = np.asarray(frame)
frame[frame<0.5] = np.nan
frame = pd.DataFrame(frame,index=['a','b','c','d'], columns=['a','b','c','d'])
result = np.zeros((4,4))
result = pd.DataFrame(result, index=['A','B','C','D'], columns=['A','B','C','D'])
Somenums = [1,2,3,4]
for i, col in enumerate(frame.columns.values):
print frame[col]
print np.isfinite(frame[col])
mask = frame.ix[np.isfinite(frame[col]),col]
print mask
print Somenums[mask]
result.iloc[:,i] = Somenums[mask]
print result
</code></pre>
<p>但我收到:</p>
<pre><code>TypeError Traceback (most recent call last)
<ipython-input-34-c95f4f5ee05b> in <module>()
24 mask = frame.ix[np.isfinite(frame[col]),col]
25 print mask
---> 26 print Somenums[mask]
27 result.iloc[:,i] = Somenums[mask]
28 print result
TypeError: list indices must be integers, not Series
</code></pre>
<p>我怎样才能正确地索引它/正确地应用遮罩?在</p>