Reading in a pretty-printed/formatted dataframe us

2019-07-03 22:53发布

问题:

Here's a dataframe from another question:

+--------------------+---------------+-------+
|   Location         | Date          | Value |
+--------------------+---------------+-------+
| India              | 2015-03-15    |   -200|
| India              | 2015-02-15    |  140  |
| India              | 2015-01-15    |  155  |
| India              | 2015-12-15    |   85  |
| India              | 2015-11-15    |   45  |
| China              | 2015-03-15    |   199 |
| China              | 2015-02-15    |  164  |
| China              | 2015-01-15    |  209  |
| China              | 2015-12-15    |   24  |
| China              | 2015-11-15    |   11  |
| Russia             | 2015-03-15    |   48  |
| Russia             | 2015-02-15    |  104  |
| Russia             | 2015-01-15    |  106  |
| Russia             | 2015-12-15    |   -20 |
| Russia             | 2015-11-15    |   10  |
+--------------------+---------------+-------+

And, for the sake of convenience, here's the version that you can copy without any problems:

   Location        Date  Value
0     India  2015-03-15   -200
1     India  2015-02-15    140
2     India  2015-01-15    155
3     India  2015-12-15     85
4     India  2015-11-15     45
5     China  2015-03-15    199
6     China  2015-02-15    164
7     China  2015-01-15    209
8     China  2015-12-15     24
9     China  2015-11-15     11
10   Russia  2015-03-15     48
11   Russia  2015-02-15    104
12   Russia  2015-01-15    106
13   Russia  2015-12-15    -20
14   Russia  2015-11-15     10

How would you read it in using df.read_clipboard without having to manually remove all those delimiters and row separators?

This would've been easy using sep or delimiter if it were not for the ---+----.

回答1:

In [129]: pd.read_clipboard(comment='+', sep='\s*\|\s*', usecols=[1,2,3], engine='python')
Out[129]:
   Location        Date  Value
0     India  2015-03-15   -200
1     India  2015-02-15    140
2     India  2015-01-15    155
3     India  2015-12-15     85
4     India  2015-11-15     45
5     China  2015-03-15    199
6     China  2015-02-15    164
7     China  2015-01-15    209
8     China  2015-12-15     24
9     China  2015-11-15     11
10   Russia  2015-03-15     48
11   Russia  2015-02-15    104
12   Russia  2015-01-15    106
13   Russia  2015-12-15    -20
14   Russia  2015-11-15     10