Python 如何从CSV文件的子集创建自定义数据帧

Python 如何从CSV文件的子集创建自定义数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个CSV文件,如下所示: 1, 2, 3, 4, 5 ... 0, 1, 0, 1, 0 ... 0, 1, 0, 1, 0 ... str1, str2, str3, str4, str5 ... val1, val1.1, val1.2, val1.3, val1.4 ... val2, val2.1, val2.2, val2.3, val2.4 ... ... str2, str5 val1.1 val2.1 val2.1 val2

我有一个CSV文件,如下所示:

    1, 2, 3, 4, 5 ...
    0, 1, 0, 1, 0 ...
    0, 1, 0, 1, 0 ...
    str1, str2, str3, str4, str5 ...
    val1, val1.1, val1.2, val1.3, val1.4 ...
    val2, val2.1, val2.2, val2.3, val2.4 ...
...
str2, str5
val1.1 val2.1
val2.1 val2.2
...
我想生成一个如下所示的数据帧:

    1, 2, 3, 4, 5 ...
    0, 1, 0, 1, 0 ...
    0, 1, 0, 1, 0 ...
    str1, str2, str3, str4, str5 ...
    val1, val1.1, val1.2, val1.3, val1.4 ...
    val2, val2.1, val2.2, val2.3, val2.4 ...
...
str2, str5
val1.1 val2.1
val2.1 val2.2
...
以下是我的尝试:

for f in files:
    data = pd.read_excel(f)
    df = df.append(data)

df[5:10] //only care about values in rows below [str1, str2, ..., strn].
d = df.ix[:, '2' : '5']
d.columns = ['str2', 'str3', 'str4', 'str5'] //rename columns, reduce table size.
这将产生:

str2 str3 str4 str5 
val1.1 val1.2 val1.3 val1.4 ...
...

如何消除str3和str4以获得原始的预期数据帧?

您可以简单地删除任何不需要的列。查看有关删除数据框列的讨论:

然后浏览文档:


在海事组织,这可以做得更有效

只解析(读取)您真正需要的数据-这将更快,并将显著减少内存消耗。除此之外,使用
pd.concat()
一次而不是使用
DF.append()
添加每个新的DF应该快得多

代码:

输出:

      str2     str5
0   val1.1   val1.4
1   val2.1   val2.4
2  val21.1  val21.4
3  val22.1  val22.4
如果使用Excel文件,只需在
get\u merged()
函数中将
read\u csv
更改为
read\u Excel
,并检查
nrows
参数是否在
read\u Excel()函数中工作

档案:

__01.csv:

1, 2, 3, 4, 5
0, 1, 0, 1, 0
0, 1, 0, 1, 0
str1, str2, str3, str4, str5
val1, val1.1, val1.2, val1.3, val1.4
val2, val2.1, val2.2, val2.3, val2.4
..................
.................
..................
..................
__02.csv:

1, 2, 3, 4, 5
0, 1, 0, 1, 0
0, 1, 0, 1, 0
str1, str2, str3, str4, str5
val21, val21.1, val21.2, val21.3, val21.4
val22, val22.1, val22.2, val22.3, val22.4
.................................

这也可以通过一个命令完成:
df.drop(['str3','str4'],axis=1)