【发布时间】:2017-09-15 10:13:27
【问题描述】:
我正在访问一个包含超过 2000 万行和 200 多列的大型 CSV 文件。
我的代码在以下部分花费了太多时间:
def Myfunction(df):
if df['3.3'] == 1 or df['2.3'] == 1 or df['1.3'] == 1 or df['4'] == 1:
df['A1'] = 'A1'
df['AZ B1'] = df[basic_clean('AZ col')]
df['CZ Cat'] = df[basic_clean('Cate name')]
df['CZ Sub'] = df[basic_clean('SubName')]
df['CZ Com'] = df[basic_clean('Comm_Name')]
else:
df['A1'] = 'Not A1'
df['AZ B1'] = df[basic_clean('Fam name')]
df['CZ Cat'] = df[basic_clean('C Name')]
df['CZ Sub'] = df[basic_clean('Sub Name')]
df['CZ Com'] = df[basic_clean('C Name')]
return df
这里,basic_clean() 是一个函数,它格式化文本(大写),不需要太多时间。我在某处读到使用并行化 pandas 数据帧,但没有找到任何好的材料。
【问题讨论】:
-
basic_clean('Fam name')在做什么?如果不了解您的代码的作用,我们如何提供帮助? -
我不确定这是否符合您的想法:
df['3.3'] == 1。 -
@IanS 有一个名为 3.3 的列,它正在检查它的值是否为 1。
-
@cᴏʟᴅsᴘᴇᴇᴅ 我上面提到的 basic_clean() 方法接受一个字符串参数并返回其大写值
-
为什么需要一个函数呢?您是否将其作为列名传递?能否请您展示一些我们可以使用的数据?
标签: python database pandas dataframe parallel-processing