【问题标题】:Pandas reads all columns into a single columnPandas 将所有列读入单个列
【发布时间】:2022-01-06 14:48:49
【问题描述】:

我正在尝试加载一个用分号“;”分隔的 txt 文件,但是当使用 pandas 的 read_csv 时,它会将两列放在一个列中。 .txt 文件如下所示:

Profile 1;Profile 1;
x;y;
[m];[m];
0;3.4467541e-010;
1.0053956e-007;3.5615887e-010;
2.0107912e-007;5.7246124e-010;
3.0161869e-007;6.8413124e-010;
4.0215825e-007;7.3333242e-010;
...
5.2280572e-006;1.9645013e-009;
5.3285968e-006;1.8215396e-009;

我的尝试采取以下形式:

df = pd.read_csv('textfile.txt', sep=';', header=2)

由此产生的输出是:

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 54 entries, 0 to 53
Data columns (total 1 columns):
 #   Column                Non-Null Count  Dtype
---  ------                --------------  -----
 0   [m]     [m]           54 non-null     object
dtypes: object(1)
memory usage: 560.0+ bytes

我也尝试过使用“with open()”的其他方法,但也没有运气。

【问题讨论】:

  • 你试过用skirows吗?
  • 也许我的问题很愚蠢,但如果您的数据框是 dfdata 是什么?否则你的代码在这里运行良好。
  • 尝试 "data = pd.read_csv(path_to_data + filename, sep=';', header=None, skiprows=3)" 仍然只产生一列。
  • 是的,“数据”是“df”。

标签: python pandas dataframe csv text-files


【解决方案1】:

正如@Reihaneh Kouhi 报告的那样,问题是最后一个分号创建了一个额外的空列以及第一行和第三行(要跳过)。
我在本地尝试过,它应该可以工作。
我只是跳过行然后删除最后一列

import pandas as pd

table = pd.read_csv("table.csv", sep=";",  skiprows=[0,2], skipinitialspace=True, engine='python')
table = table.iloc[:, :-1]
print(table)

【讨论】:

  • 这就是工作!感谢您的帮助。
  • 不客气!
【解决方案2】:

您的分隔符是一个分号,在第二列之后是另一个分号。 这就是发生此问题的原因。只需去掉每行中的最后一个分号并运行代码。 我不确定,但这对我有用。

【讨论】:

  • @BigBen 是的,我编辑它。谢谢:)
  • 有什么聪明的办法吗?数据是这样从不同的软件导出的。
  • @Woodywoodleg 请检查它是否有效。如果是,那么我们会找到方法。我不是python专家,但我们总能找到方法:)
  • 即使在手动删除 las 分号后,数据仍会加载到单个列中。但是 Cr4zyTun4 提出的解决方案似乎可以胜任!感谢您的帮助。
猜你喜欢
  • 2023-04-04
  • 2015-05-14
  • 1970-01-01
  • 2021-03-21
  • 2019-05-02
  • 2015-09-04
  • 2020-11-24
  • 2014-08-22
  • 2019-11-28
相关资源
最近更新 更多