从unstack()切片数据帧

时间:2017-12-21 07:56:14

标签: pandas

这是一个使用unstack()

出现的数据框df
<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>
 */

define('LARAVEL_START', microtime(true));



require __DIR__.'../lsapp/vendor/autoload.php';



$app = require_once __DIR__.'../lsapp/bootstrap/app.php';

我尝试使用

切割部分数据框
Index       0         7       21      22      23   
June       89        0        3       5        2
July       30          0        2       5        4
August   20        8        5       5        5

我尝试使用

切割部分数据框
df2=df.loc[: , :'21'] 

但我有这个错误:

  

keyError:'21'

1 个答案:

答案 0 :(得分:3)

错误表示没有列21作为字符串。

检查:

#integers columns
print (df.columns.tolist())
[0, 7, 21, 22, 23]

#strings columns
#print (df.columns.tolist())
#['0', '7', '21', '22', '23']

您可以使用Series整数21

df2 = df[21]
print (df2)
Index
June      3
July      2
August    5
Name: 21, dtype: int64

对于一列DataFrame,请使用双[]

df2 = df[[21]]
print (df2)
        21
Index     
June     3
July     2
August   5

编辑:

另一个问题应该是尾随空格:

print (df.columns.tolist())
['0', '7', '  21    ', '22', '23']

并删除需要str.strip

df.columns = df.columns.str.strip()

print (df.columns.tolist())
['0', '7', '21', '22', '23']

EDIT1:

对于值为24且数据错误的过滤列,对errors='coerce'的{​​{1}} to_numeric使用{{3}}作为不可解析的值:

NaN