<h3><a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pipe.html" rel="nofollow noreferrer">^{<cd1>}</a>+<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.where.html" rel="nofollow noreferrer">^{<cd2>}</a>+<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.between.html" rel="nofollow noreferrer">^{<cd3>}</a></h3>
<p>不能在数组中丢弃<em>值;这将涉及到<em>对数组和数据帧的列<em>都具有相同的大小。在</p>
<p>但是您可以迭代并使用<code>pd.Series.where</code>将超出范围的值替换为<code>NaN</code>。注意Pandas通过函数馈送数据帧的方式是通过<code>pipe</code>:</p>
<pre><code>import pandas as pd
import numpy as np
def c_cutoff(data_frame, column_cutoff):
for col, min_val, max_val in column_cutoffdata:
data_frame[col] = data_frame[col].where(data_frame[col].between(min_val, max_val))
return data_frame
np.random.seed(5)
df = pd.DataFrame(np.random.randint(100, size=(100, 6)),
columns=list('ABCDEF'),
index=['R{}'.format(i) for i in range(100)])
column_cutoffdata = [('B',27,78),('E',44,73)]
print(df.head())
# A B C D E F
# R0 99 78 61 16 73 8
# R1 62 27 30 80 7 76
# R2 15 53 80 27 44 77
# R3 75 65 47 30 84 86
# R4 18 9 41 62 1 82
newdata_cutoff = df.pipe(c_cutoff, column_cutoffdata)
print(newdata_cutoff.head())
# A B C D E F
# R0 99 78.0 61 16 73.0 8
# R1 62 27.0 30 80 NaN 76
# R2 15 53.0 80 27 44.0 77
# R3 75 65.0 47 30 NaN 86
# R4 18 NaN 41 62 NaN 82
</code></pre>
<p>如果要删除具有<em>任何</em><code>NaN</code>值的行,则可以使用<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html" rel="nofollow noreferrer">^{<cd8>}</a>:</p>
^{pr2}$