擅长:python、mysql、java
<p>因为我们只关心前两个子串和倒数第二个子串:</p>
<pre><code>df = pd.DataFrame(["LONG AAPL 2X CBZ", "SHORT GOOG 10X VON", "BULL AXP UN X3 VON","LONG AXP X3 VON"], columns=["Name"])
maps = {"AAPL": "Apple", "GOOG": "Google"}
signs = {"SHORT": "-"}
def split(i):
spl = i.split()
a, b, c = spl[0], spl[1], spl[-2]
val = maps.get(b, b) # if name is not to be replaced keep original
return "Tracks {} with {}{} leverage".format(val, signs.get(a, ""), c)
df["Description"] = df["Name"].map(split)
</code></pre>
<p>输出:</p>
^{pr2}$
<p>只是拆分比使用正则表达式更有效:</p>
<pre><code>In [33]: df2 = pd.concat([df]*10000)
In [34]: timeit df2["Name"].map(split)
10 loops, best of 3: 57.5 ms per loop
In [35]: timeit f2(df2['Name'])
10 loops, best of 3: 168 ms per loop
</code></pre>
<p>如果你想添加更多的单词来替换,只需将它们添加到地图中,并用符号来表示。在</p>