首页 > 解决方案 > 读取混合了多种类型数据的csv最聪明的方法是什么?

问题描述

1,100
2,200
3,300
...
many datas
...
9934,321
9935,111
2021-01-01, jane doe, 321
2021-01-10, john doe, 211
2021-01-30, jack doe, 911
...
many datas
...
2021-11-30, jick doe, 921

如果我遇到像上面这样的 csv 文件,

如何将其分隔为 2 个数据框?没有循环或其他东西计算

标签: pandas

解决方案


我是这样看的:

import pandas as pd
data = 'file.csv'
df = pd.read_csv(data ,names=['a', 'b', 'c']) # I have to name columns
df_1 = df[~df['c'].isnull()] #This is with 3rd column
df_2 = df[df['c'].isnull()] #This is where are only two columns

第二个想法是首先找到数据将从 2 列切换到 3 列的行的索引。

import pandas as pd
import numpy as np
data = 'stack.csv'
df = pd.read_csv(data ,names=['a', 'b', 'c'])
rows = df['c'].index[df['c'].apply(np.isnan)]
df_1 = pd.read_csv(data ,names=['a', 'b','c'],skiprows=rows[-1]+1)
df_2 = pd.read_csv(data ,names=['a', 'b'],nrows = rows[-1]+1)

我认为您可以在文件更改时轻松修改代码。

这是我命名列链接的原因


推荐阅读