如何根据其他列的条件设置选定的列值?

时间:2019-10-01 15:44:42

标签: python pandas

我需要从包含行的行0的单元格中拆分出一个字符串,然后将其复制到相邻列中。 然后,只要旁边的行不为空,就需要在整个列中复制该值。

我进行了一个while循环,检查特定字符串“ xyz”是否在第一行[0,i]中。如果是这样,我将字符串拆分()到另一列中。然后,我在整个列中填充()值。

到目前为止,它仍然有效,但是效率不高。

然后,我已经能够基于其旁边的行为空的条件来删除值,但是while循环的效率太低。我只能通过将所有列都连接到一个列中来设法对其进行“向量化”。

i = 7
j = len(df.columns)

while i < j:
    if "ASTM" in str(df.loc[0,i]):
        if df.loc[1,i] == 'Method':
            df.loc[2,i] = 'ASTM'+df.loc[0,i].split('ASTM')[1]
            df[i].fillna(method='ffill', inplace=True)

i+=1

这时我仍然需要删除i-3列中的行的值

我尝试在以下位置插入

df.loc[df[i-3].isnull(), df[i]] = np.NaN

但是我得到了错误:

KeyError: "None of [Index(['Density at 15 C (g/mL) (ASTM D5002)', 'Method', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       ...\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)'],\n      dtype='object', length=297)] are in the [columns]"

期望它仅在同一行的第i-3列的值为空时才删除第i列中的值。

0 个答案:

没有答案