为什么在熊猫中无法访问df数据?



我有一个表格,其中的列名并没有真正组织起来,就像它们具有不同年份的数据和不同的列号一样。

所以我应该通过指定的列名访问每个数据。我使用此语法访问列。

df = df[["2018/12"]]

但是当我只想提取该列下的数字时,使用

df.iloc[0,0]

它抛出一个错误,例如

single positional indexer is out-of-bounds

所以我正在使用

df.loc[0]

但它具有带有数字数据的列名。

如何仅提取每行的编号?

以下是 CSV 数据

    Closing Date,2014/12,2015/12,2016/12,2017/12,2018/12,Trend
Net Sales,"31,634","49,924","62,051","68,137","72,590",
""
Net increase,"-17,909","-16,962","-34,714","-26,220","-29,721",
Net Received,-,-,-,-,-,
Net Paid,-328,"-6,038","-9,499","-9,375","-10,661",

假设您df从csv导入了以下数据框:

   Closing Date  2014/12  2015/12  2016/12  2017/12  2018/12
0     Net Sales   31,634   49,924   62,051   68,137   72,590
1  Net increase  -17,909  -16,962  -34,714  -26,220  -29,721
2  Net Received        -        -        -        -        -
3      Net Paid     -328   -6,038   -9,499   -9,375  -10,661

然后通过执行df = df[["2018/12"]]创建一个具有一列的新数据框df.iloc[0,0]在这里将很好地工作,返回72,590 .我写的df = df["2018/12"]你会创建一个新系列,在这里df.iloc[0,0]会抛出错误"索引器太多",因为它是一个一维系列。

无论如何,如果您需要序列的值,请使用 values 属性(或版本 0.24 或更高版本的 to_numpy()(将数据作为数组获取,或使用to_list()将它们作为列表获取。

但我想你真正想要的是让你的桌子转置:

df = df.set_index('Closing Date').T

到以下更合乎逻辑的形式:

Closing Date Net Sales Net increase Net Received Net Paid
2014/12         31,634      -17,909            -     -328
2015/12         49,924      -16,962            -   -6,038
2016/12         62,051      -34,714            -   -9,499
2017/12         68,137      -26,220            -   -9,375
2018/12         72,590      -29,721            -  -10,661

在这里,df.loc['2018/12','Net Sales']为您提供72,590等。

最新更新