我正在使用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
任何帮助将不胜感激。
答案 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