python - 向 Pandas 数据框添加更多列

标签 python pandas csv dataframe

我正在使用 Pandas 函数 pd.read_csv 导入由 | 分隔的 txt 文件。列标题有 419 个字段,因此它会按此方式计算所有字段。但有些行的列数超过 419。

那么我如何使数据框能够根据需要增加列数,或者只添加X数量的列以允许将来有更多的列。

示例:

我该如何解释“F”?

A B C D E
A B C D E
A B C D E F

这是我收到的错误。我在 Jupyter 笔记本中使用 python 3。

ParserError: Error tokenizing data. C error: Expected 419 fields in line 7945, saw 424

这是我尝试使用的代码

data = pd.read_csv('filepath.txt', sep="|",skip_blank_lines=True, encoding = 'latin-1', header= None)

最佳答案

根据您的设置,在阅读完每一行之前,您不会知道列数。那不会有效率。一种方法是将数据读入列表列表中,并根据需要附加任意数量的 NaN 值。然后提供给 pd.DataFrame 构造函数。

这是一个例子:

from io import StringIO
import csv
import numpy as np

x = StringIO("""A|B|C|D|E
A|B|C|D|E
A|B|C|D|E|F""")

# replace x with open('file.csv', 'r')
with x as fin:
    data = list(csv.reader(fin, delimiter='|'))

num = max(map(len, data))
data = [i+[np.nan]*(num-len(i)) for i in data]
df = pd.DataFrame(data)

print(df)

   0  1  2  3  4    5
0  A  B  C  D  E  NaN
1  A  B  C  D  E  NaN
2  A  B  C  D  E    F

关于python - 向 Pandas 数据框添加更多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503533/

相关文章:

python - 我可以只使用 flow() 而不是 flow_from_directory 在 Keras 中增加图像和蒙版吗?

python - 连接到父循环的 BST

python - 允许用户在 Heroku 上为 Django 应用程序使用自定义域

python - 修改 pandas 中的单个列时的SettingWithCopyWarning

pandas - Python Pandas 查询

ruby - 使用 Ruby 处理 TSV

python - 在 scikit 的 precision_recall_curve 中,为什么阈值与召回率和精度具有不同的维度?

python - 使用 pandas 从 2 列中提取现有和不存在的值

mysql - 为什么我的第一列在输入时被跳过?

python - 将数据框列值转换为列表