【问题标题】:How to generate the Python lambda filter codes in the for loop?如何在 for 循环中生成 Python lambda 过滤器代码?
【发布时间】:2021-03-02 16:48:25
【问题描述】:

我是 Python lambda 的初学者。并尝试将 Python for 循环转换为 lambda 表达式。首先我想解释一下 for 循环行。

fred = Fred2Hdfs() # construct the python imported objects

for i, state in enumerate(us_states):
    df_unemployee_annual = fred.getFredDF('A', state, 'search_text')  # generate dataframe from the object
    if df_unemployee_annual is None:
        continue
    
    if i == 0:
        fred.writeCsv2Hdfs('unemployee_annual.csv', df_unemployee_annual)  # write dataframe 
    else:
        fred.appendCsv2Hdfs('unemployee_annual.csv', df_unemployee_annual)  # append dataframe

上面的代码成功运行,没有错误。下面的代码是我尝试转换的 Python lambda 代码。

fred = Fred2Hdfs()

freq='A'
str='search_text'
result_df_list = list(map(lambda state: fred.getFredDF(freq, state, str), us_states))
result_df_list = list(filter(lambda df: df is not None, result_df_list))
print(result_df_list)  # codes work correctly until this line.
#func=map(lambda df:fred.writeCsv2Hdfs('unemployee_annual_.csv', df) , result_df_list)

我被 for 循环中的 if i==0: 行困住了。如何从 if i==0: 行中制作适当的 Python lambda 表达式。恐怕我不知道如何实现 Python lambda 的 if 过滤器。

【问题讨论】:

    标签: python lambda


    【解决方案1】:
    map(lambda (i,df):fred.writeCsv2Hdfs('unemployee_annual_.csv', df) if i == 0 else fred.appendCsv2Hdfs('unemployee_annual_.csv', df) , enumerate(result_df_list))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2016-08-12
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多