我有一个表格,其中的列名并没有真正组织起来,就像它们具有不同年份的数据和不同的列号一样。
所以我应该通过指定的列名访问每个数据。我使用此语法访问列。
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
等。