首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为某个条件分解数据框行?

如何为某个条件分解数据框行?
EN

Stack Overflow用户
提问于 2019-08-26 19:30:22
回答 1查看 269关注 0票数 1

我想将一个单元格中的字符串拆分到它下面的新行中。

现在,我使用了一个带有if语句的while循环,并迭代了第一列。如果它包含我要查找的字符串,我会使用另一个while循环将一个空行附加到dataframe的末尾,然后将每一行向下复制一行,直到在包含该字符串的那一行之后有一个空行。然后,我将字符串复制到空行中。这感觉是做这件事最复杂的方式。

我研究了explode()函数,看起来它应该能起作用,但我不能让它工作。

基本上,每当它遇到像"bla bla (ASTM xxxx)“这样的东西时,我想拆分出"ASTM xxxx”。在我将新行的第0列设为"Method“之后,后面的每一列都是"ASTM xxxx”。

当前工作代码:

代码语言:javascript
复制
var_row = 0
var_row_length = len(df.index)-1
var_countdown = len(df.index)

while var_row < var_row_length:
    if "ASTM" in str(df.iloc[var_row,0]):
        df = df.append(pd.Series(name=var_countdown))
        while var_countdown > var_row:
            df.loc[var_countdown] = df.loc[var_countdown-1]
            var_countdown -= 1
        df.loc[var_countdown+1]=np.nan
        #copy df.iloc[var_countdown,0] to [var_countdown+1,0], copy over to [var_countdown+1,1], keep ASTM xxxx only
        #ffill the rest of the empty row, profit

        df.loc[var_countdown+1,2]=df.loc[var_countdown,0]
        df.loc[var_countdown+1,2] = re.sub('.*ASTM','ASTM',df.loc[var_countdown+1,2])
        df.iloc[var_countdown+1,2]=df.iloc[var_countdown+1,2].replace('):','')
        df.iloc[var_countdown+1,2:] = df.iloc[var_countdown+1,2:].fillna(method='ffill')

        df.iloc[var_countdown,0]=df.iloc[var_countdown,0].split('(')[0]

        df.iloc[var_countdown+1,1]="Method"
        var_countdown = len(df.index)
        var_row += 1

我可以使用下面的代码找到这些值:

代码语言:javascript
复制
df[df[0].str.contains("ASTM", na=False)]

但我不知道如何将“ASTM”字符串拆分到它下面的另一行中。

当我使用explode()时,什么也没有发生。我甚至不知道我能不能用一根选定的线把它炸开。也许可以一起使用split()和explode()?

EN

回答 1

Stack Overflow用户

发布于 2019-08-26 19:38:48

我想你是在找这样的东西,

代码语言:javascript
复制
mask = df[0].str.contains("ASTM", na=False)
df.loc[mask, 6] = df[0]

使用df.str.contains("ASTM",na=False)获取掩码,创建仅存储掩码值的新列

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57657090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档