- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
问题:我正在尝试将 csv 读入包含不同列大小的数据的 pandas 数据帧。
示例和说明:
Code:
df = pd.read_csv(input, error_bad_lines=False)
input:
ID, Time, Val
15, 18:00:01, 4
15, 18:00:02, 6
15, 18:00:03, 5
ID, Time, Val1, Val2
16 18:00:03, 1, 43
ID, Time, Val
15, 18:00:04, 8
并且这种模式在整个文件中持续存在。最初我正在考虑扔掉多余的列,因为 read_csv 选项会抛出错误并且不读取它们,我只是开始忽略它们。然而,我随后在数据框中得到了重复的 header ...为了解决这个问题,我尝试了 drop_duplicates()
但发现只有pandas的V0.17才包含 keep=False
选项。我最终开始说服自己尝试保留数据。这是我的问题。根据上面的数据集,我希望能够创建两个独特的数据框。您可以假设 ID 始终是唯一的,因此您可以为拥有的不同 ID 数量创建 N 个框架。每个 ID 不会有相同数量的 header 。一旦遇到不同的 ID,就会打印其标题。例如,如果我们点击另一个 ID 16,其标题将在数据之前打印。同样,如果我们点击另一个 ID 15,其标题将在其数据之前打印。
我想也许在开始使用数据帧之前预处理数据,因为这是一个选项。但由于我对 pandas 的功能还很陌生,我希望在我继续编写一些令人讨厌的预处理代码之前,这里的一些人会提出建议:)。我的另一个想法变成了一个问题 - 对于 error_bad_lines,有没有办法将这些行保存到另一个数据帧或其他东西?另外,我告诉 pandas 在 read_csv 中只查找 ID 为 X 的项目,然后对我的所有 ID 执行此操作?我要补充一点,ID 的数量是有限且已知的。
我当前的 pandas 版本是 0.14。
最佳答案
请注意,我更正了示例数据中我认为存在的拼写错误。
ID
的换行符。from io import StringIO
import pandas as pd
import re
txt = """ID, Time, Val
15, 18:00:01, 4
15, 18:00:02, 6
15, 18:00:03, 5
ID, Time, Val1, Val2
16, 18:00:03, 1, 43
ID, Time, Val
15, 18:00:04, 8"""
def parse(s):
return pd.read_csv(StringIO(s), skipinitialspace=True)
pd.concat([parse(s) for s in re.split('\n(?=ID)', txt)])
ID Time Val Val1 Val2
0 15 18:00:01 4.0 NaN NaN
1 15 18:00:02 6.0 NaN NaN
2 15 18:00:03 5.0 NaN NaN
0 16 18:00:03 NaN 1.0 43.0
0 15 18:00:04 8.0 NaN NaN
<小时/>
以上是使用 OP 提供的示例数据进行的。如果这是在 csv 文件中,解决方案将如下所示
from io import StringIO
import pandas as pd
import re
with open('myfile.csv') as f:
txt = f.read()
def parse(s):
return pd.read_csv(StringIO(s), skipinitialspace=True)
pd.concat([parse(s) for s in re.split('\n(?=ID)', txt)])
关于python - Pandas read_csv() - Flie 包含不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44346185/
**更新---问题不是文件编写器未关闭,而是 Java 应用程序错误终止。我已经更新了问题。 我有以下类启动 JAVAFX Web View 并向 Web View 的 html 公开一些 java
问题:我正在尝试将 csv 读入包含不同列大小的数据的 pandas 数据帧。 示例和说明: Code: df = pd.read_csv(input, error_bad_lines=False)
我想使用 ERT 从以下 Simulink 模型生成 C 代码。 编码器将 matlab.mat 的内容硬编码到代码中: /* Start for FromFile: '/From File' */
我是一名优秀的程序员,十分优秀!