擅长:python、mysql、java
<p>这不是最漂亮的方法,但我相信这就是你想要的:</p>
<pre><code>from io import StringIO
import pandas as pd
df = pd.read_table(StringIO("""2018-01-04 04:30:00,GBP,Low Impact Expected,Mortgage Approvals,65K,64K,65K
2018-01-04 04:51:00,EUR,Low Impact Expected,Spanish 10-y Bond Auction,1.53|1.8,,1.49|2.0
2018-01-04 05:01:00,EUR,Low Impact Expected,French 10-y Bond Auction,0.79|1.4,,0.36|1.9
2018-01-04 07:30:00,USD,Low Impact Expected,Challenger Job Cuts y/y,-3.6%,,30.1%"""), names=['Date','Currency','Impact','Event','Actual','Forecast','Previous'], sep=',')
df = df.loc[~df['Actual'].str.contains('[\|\<]')]
for col in ['Actual', 'Forecast', 'Previous']:
df.loc[pd.notnull(df[col]) & df[col].str.contains('\%'), col] = pd.to_numeric(df.loc[pd.notnull(df[col]) & df[col].str.contains('\%'), col].str.replace('%', '')) / 100
df.loc[pd.notnull(df[col]) & df[col].str.endswith('K'), col] = pd.to_numeric(df.loc[pd.notnull(df[col]) & df[col].str.endswith('K'), col].str.replace('K', '')) * 1000
</code></pre>