大熊猫跳过一个专栏

时间:2017-11-11 08:36:15

标签: python pandas csv

我正在使用pandas遍历csv。 csv是不均匀的,即一些没有标题的额外列(在某些行中)。我收到此错误

function wh_log($log_msg)
{
    $log_filename = "log";
    if (!file_exists($log_filename)) 
    {
        // create directory/folder uploads.
        mkdir($log_filename, 0777, true);
    }
    $log_file_data = $log_filename.'/log_' . date('d-M-Y') . '.log';
    file_put_contents($log_file_data, $log_msg . "\n", FILE_APPEND);
}

我读了一些解决方案,但其中一些正在跳过整条线,另一些则建议手动调整。我买不起。 我需要一个方法可以删除额外的列,保留行的其余部分。

以下是数据示例

pandas.errors.ParserError: Error tokenizing data. C error: Expected 11 fields in line 8, saw 12

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

假设您有专栏[' A',' B',' C',' D',' E&# 39;]和4行,使得数据帧df看起来像:

Row   A B C D`E
1     1`1 1 1 5 
2     0 2 0 0 
3     2 4 1 2 2
4     5 4 5 4

现在,如果你想删除额外的列' E'第1行和第3行的值可以简单地创建另一个列表

features=df.columns
f=[]
for feature in features:
    if df[feature].notnull().all():
        f.append(feature)

df=df[f]
print df 

因此输出现在是:

Row   A B C D`
1     1`1 1 1  
2     0 2 0 0 
3     2 4 1 2 
4     5 4 5 4

希望这有帮助!

答案 1 :(得分:0)

如果你知道你有多少列。

[pid:

; [0,1,2,3 ...];是具有内容的列。 否则你不知道。

PID