转置后找不到列名

时间:2019-07-15 11:40:53

标签: python dataframe transpose

在转换Python数据框后,我无法访问列名来绘制图形。我想选择两列,但失败了。它一直说没有这样的列名。我对Python,数据帧和转置非常陌生。有人可以帮忙吗?

下面是我的输入文件,我想将行转置为列。换位后成功了,但是我无法选择“加拿大”和“喀麦隆”来绘制图表。

    country     1990    1991    1992    1993    1994    1995
0   Cambodia    65.4    65.7    66.2    66.7    67.1    68.4
1   Cameroon    63.9    63.7    64.7    65.6    66.6    67.6
2   Canada      98.6    99.6    99.6    99.8    99.9    99.9
3   Cape Verde  77.7    77.0    76.6    89.0    79.0    78.0
    import pandas as pd
    import numpy as np
    import re 
    import math
    import matplotlib.pyplot as plt

    missing_values=["n/a","na","-","-","N/A"]
    df = pd.read_csv('StackoverflowGap.csv', na_values = missing_values)
    # Transpose
    df = df.transpose()
    plt.figure(figsize=(12,8))
    plt.plot(df['Canada','Cameroon'], linewidth = 0.5)
    plt.title("Time Series for Canada")
    plt.show()

它会产生一长串错误消息,但最终消息是

KeyError :(“加拿大”,“喀麦隆”)

1 个答案:

答案 0 :(得分:0)

处理数据时,您可能需要做一些事情。

  1. 如果csv文件没有标题,请使用df = pd.read_csv('StackoverflowGap.csv', na_values = missing_values, header = None)
  2. 转置时,需要命名列 df.columns= df.iloc[0]
  3. 完成此操作后,您需要删除表的第一行(因为它包含列名)df = df.reindex(df.index.drop(0))
  4. 最后,当按列访问数据时(在plt.plot()命令中),您需要在列列表(即df[])上使用df[['Canada', 'Cameroon']]

编辑因此,适用于我的代码如下

df = pd.read_csv('StackoverflowGap.csv', na_values = missing_values, header = None)
df = df.T
df.columns= df.iloc[0]
df = df.reindex(df.index.drop('country'))
df.index.name = 'Year'
plt.figure(figsize=(12,8))
plt.plot(df[['Canada','Cameroon']], linewidth = 0.5)
plt.title("Time Series for Canada")
plt.show()