【问题标题】:Python - looping through rows and concating rows until a certain value is encounteredPython - 遍历行并连接行直到遇到某个值
【发布时间】:2022-08-13 23:22:59
【问题描述】:

我对我正在尝试组合的简短 python 脚本遇到的问题感到非常困惑。我正在尝试遍历数据框,将行附加到新的数据框,直到遇到某个值。

import pandas as pd


#this function will take a raw AGS file (saved as a CSV) and convert to a
#dataframe.
#it will take the AGS CSV and print the top 5 header lines  
def AGS_raw(file_loc):
    raw_df = pd.read_csv(file_loc)
    #print(raw_df.head())
    return raw_df
    
import_df = AGS_raw(\'test.csv\')

def AGS_snip(raw_df):
    for i in raw_df.iterrows():
        df_new_row = pd.DataFrame(i)
        cut_df = pd.DataFrame(raw_df)
        if \"**PROJ\" == True:
            cut_df = cut_df.concat([cut_df,df_new_row],ignore_index=True, sort=False)
        elif \"**ABBR\" == True:
            break
        print(raw_df)
        return cut_df

我不需要详细说明,但此数据中的值(**PROJ 和 **ABBR)作为表格顶部的单个单元格出现。所以我想逐行循环数据,追加行直到遇到 **ABBR。

当我打电话给AGS_snip(import_df) 时,什么也没有发生。以前的化身只是吐出了整个 df,我只是对循环的逻辑感到困惑。非常感谢任何帮助。

编辑:CSV 的原始文本

**PROJ,
1,32
1,76
32,56
,
**ABBR,
1,32
1,76
32,56

测试 CSV 如下所示:

  • 我假设您想为 AGS CSV 文件中的每个表获取一个数据框?您可以发布一些 CSV 文件的原始文本,以及您要为其提取数据帧的所有表头吗?

标签: python pandas


【解决方案1】:

“什么都没有发生”的原因可能是您在ifelif 中使用的条件。

"**PROJ" == True"**ABBR" == True 都不会是 True,因为 "**PROJ""**ABBR" 都不等于 True。您的代码相当于:

def AGS_snip(raw_df):
    for i in raw_df.iterrows():
        df_new_row = pd.DataFrame(i)
        cut_df = pd.DataFrame(raw_df)
        if False:
            cut_df = cut_df.concat([cut_df,df_new_row],ignore_index=True, sort=False)
        elif False:
            break
        print(raw_df)
        return cut_df

这与以下内容相同:

def AGS_snip(raw_df):
    for i in raw_df.iterrows():
        df_new_row = pd.DataFrame(i)
        cut_df = pd.DataFrame(raw_df)
        print(raw_df)
        return cut_df

你也总是在循环内部 return 并且 df_new_row 不用于任何事情,所以它相当于:

def AGS_snip(raw_df):
    first_row = next(raw_df.iterrows(), None)
    if first_row:
        cut_df = pd.DataFrame(raw_df)
        print(raw_df)
        return cut_df

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多