在pandas中命名列会删除数据

时间:2014-08-14 01:41:45

标签: python pandas

下面的代码给了我这张表:

raw = pd.read_clipboard()
raw.head()

+---+---------------------+-------------+---------+----------+-------------+
|   |     Afghanistan     | South Asia  | 652225  | 26000000 | Unnamed: 4  |
+---+---------------------+-------------+---------+----------+-------------+
| 0 | Albania             | Europe      |   28728 |  3200000 | 6656000000  |
| 1 | Algeria             | Middle East | 2400000 | 32900000 | 75012000000 |
| 2 | Andorra             | Europe      |     468 |    64000 | NaN         |
| 3 | Angola              | Africa      | 1250000 | 14500000 | 14935000000 |
| 4 | Antigua and Barbuda | Americas    |     442 |    77000 | 770000000   |
+---+---------------------+-------------+---------+----------+-------------+

但是当我尝试重命名列并创建一个DataFrame时,所有数据都会消失:

df = pd.DataFrame(raw, columns = ['name', 'region', 'area', 'population', 'gdp'])
df.head()

+---+------+--------+------+------------+-----+
|   | name | region | area | population | gdp |
+---+------+--------+------+------------+-----+
| 0 | NaN  | NaN    | NaN  | NaN        | NaN |
| 1 | NaN  | NaN    | NaN  | NaN        | NaN |
| 2 | NaN  | NaN    | NaN  | NaN        | NaN |
| 3 | NaN  | NaN    | NaN  | NaN        | NaN |
| 4 | NaN  | NaN    | NaN  | NaN        | NaN |
+---+------+--------+------+------------+-----+

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

你应该写:

df.columns = ['name', 'region', ...]

由于您没有尝试复制整个DataFrame,因此效率也更高;据我所知,将一个DataFrame传递给另一个DataFrame的构造函数会产生深度而非浅的副本。