回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想知道当从一个给定的(csv)文件加载数据时,如何用多列替换特定的值,将字符串和数值结合起来。你知道吗</p>
<p>在下面的示例中,假设您有许多地理位置,具有已知的纬度和经度,以及一组特定的属性(P1-P5)和一个类(仅包括问题的字符串部分)。有些缺少的值被<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html" rel="nofollow noreferrer">genfromtxt</a>正确替换(本例中缺少的值是-999),另外还有一些不正确的值(假,或其他类型的标志),如0.0。如何将0.0替换为-999?你知道吗</p>
<p>数据:</p>
<pre><code>Name,lat,long,P1,P2,P3,P4,P5,Class
id1,71.234,10.123,0.0,11,212,222,1920,A
id2,72.234,11.111,,,312,342,1920,A
id3,77.832,12.111,1,0.0,,333,4520,B
id4,77.987,12.345,3,0.0,,231,2020,B
id5,77.111,13.099,5,11,212,222,1920,A
</code></pre>
<p>目前为止的代码是:</p>
<pre><code>dfile = "data.csv"
missing_value = -999
import numpy as np
data = np.genfromtxt(dfile, unpack=True, comments='#', names=True,
autostrip='Yes', filling_values=missing_value,
dtype=('S5', 'float', 'float', 'float', 'float', 'float', 'float', 'S1')
, delimiter=',',
)
new_data = np.where(data!=0.0 ,data, -999)
</code></pre>
<p>我使用了<a href="https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.where.html" rel="nofollow noreferrer">np.where</a>(数据!=0.0,data,-999),但我得到了一个错误:<code>TypeError: invalid type promotion</code></p>
<p>我不知道我错过了什么。。。你知道吗</p>
<p>第1页。也许这是解决熊猫,但我正在寻找一个独立的解决方案</p>
<p>第2页。我知道一个棘手的解决方法是将不正确的值(0.0s)设置为初始文件中缺少的标志,但是我们要排除的多个值是什么?(或组合具有不同标志的数据)</p>