相关疑难解决方法(0)

pandas:使用运算符链接过滤DataFrame行

在大部分操作pandas可以与运营商链接(来完成groupby,aggregate,apply,等),但我发现过滤行的唯一方法是通过正常的托架索引

df_filtered = df[df['column'] == value]
Run Code Online (Sandbox Code Playgroud)

这是没有吸引力的,因为它需要df在能够过滤其值之前分配给变量.有更像以下的东西吗?

df_filtered = df.mask(lambda x: x['column'] == value)
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

293
推荐指数
9
解决办法
48万
查看次数

pandas groupby与sum()在大型csv文件上?

我有一个大文件(19GB左右),我想在内存中加载以执行某些列的聚合.

该文件如下所示:

id, col1, col2, col3, 
1 ,  12 , 15 , 13 
2 ,  18 , 15 , 13 
3 ,  14 , 15 , 13 
3 ,  14 , 185 , 213 
Run Code Online (Sandbox Code Playgroud)

请注意,我在加载到数据框后使用列(id,col1)进行聚合,还要注意这些键​​可能会连续重复几次,例如:

3 ,  14 , 15 , 13 
3 ,  14 , 185 , 213 
Run Code Online (Sandbox Code Playgroud)

对于小文件,以下脚本可以完成此任务

import pandas as pd
data = pd.read_csv("data_file", delimiter=",")
data = data.reset_index(drop=True).groupby(["id","col1"], as_index=False).sum()
Run Code Online (Sandbox Code Playgroud)

但是,对于大文件,我需要在读取csv文件时使用chunksize来限制加载到内存中的行数:

import pandas as pd
data = pd.read_csv("data_file", delimiter=",", chunksize=1000000)
data = data.reset_index(drop=True).groupby(["id","col1"], as_index=False).sum()
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,如果(id,col1)相似的行被分成不同的文件,则会出现问题.我该怎么处理?

编辑

正如@EdChum所指出的,有一个潜在的解决方法,即不仅将groupby结果附加到新的csv并重新读取并再次执行聚合,直到df大小不变. …

python pandas

9
推荐指数
2
解决办法
3118
查看次数

熊猫 read_csv 并只保留某些行(python)

我知道 skiprows 允许您传递包含要跳过的行索引的列表。但是,我有要保留的行的索引。

假设我的 cvs 文件在数百万行中看起来像这样:

  A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 0
Run Code Online (Sandbox Code Playgroud)

我想加载的索引列表只有 2,3,所以

index_list = [2,3]
Run Code Online (Sandbox Code Playgroud)

skiprows 函数的输入是 [0,1,4]。但是,我只有 [2,3] 可用。

我正在尝试类似的东西:

pd.read_csv(path, skiprows = ~index_list)
Run Code Online (Sandbox Code Playgroud)

但没有运气..有什么建议吗?

谢谢,我感谢所有的帮助,

python pandas

7
推荐指数
2
解决办法
1万
查看次数

如何快速读取一大块csv文件?

我正在使用这个答案来了解如何使用pandas.

使用的建议pd.read_csv('./input/test.csv' , iterator=True, chunksize=1000)效果很好,但它返回一个<class 'pandas.io.parsers.TextFileReader'>,所以我将其转换为数据帧,pd.concat(pd.read_csv('./input/test.csv' , iterator=True, chunksize=25))但这需要与首先读取文件一样多的时间!

关于如何快速读取文件的一部分有什么建议吗?

python pandas

2
推荐指数
1
解决办法
1267
查看次数

标签 统计

pandas ×4

python ×4

dataframe ×1