首页 > 解决方案 > 如何根据其他列中的两个条件在特定位置插入多列

问题描述

我需要重写一些我已经拥有的代码。

它插入缺少“标准偏差”列的列。为此,它会检查前一列是否为“变量”列,以及其后是否已经存在“标准偏差”列。

现在我正在使用一个循环遍历列检查df.iloc[1,x]df.iloc[1,x+1].

i = 7
j = len(df.columns)-1

while i < j:
    if df.loc[1,i] != 'Standard Deviation' and df.loc[1,i] != 'Replicates' and df.loc[1,i] != 'Method':
        if df.loc[1,i+1] != 'Standard Deviation':
            df.insert(i+1,'Standard Deviation',np.nan)
            df.columns = pd.RangeIndex(df.columns.size)
            df.loc[1,i+1]='Standard Deviation'
    i+=1
    j = len(df.columns)-1

df.insert(len(df.columns),'Standard Deviation',np.nan)
df.columns = pd.RangeIndex(df.columns.size)
df.loc[1,len(df.columns)-1]='Standard Deviation'

数据框的片段(很难理解):

50  51  52  53  54  55  56  57  58
0   Pour Point (°C) Pour Point (°C) Pour Point (°C) Pour Point (°C) Boiling Point Distribution- Temperature (°C)    Boiling Point Distribution- Temperature (°C)    Boiling Point Distribution- Temperature (°C)    Boiling Point Distribution- Temperature (°C)    Boiling Point Distribution- Temperature (°C)
1   Pour point  Standard Deviation  Replicates  Method  Initial Boiling Point   5%  10% 15% 20%
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   < -25   NaN NaN ASTM D97    NaN 35  52  70  88
4   < -25   NaN NaN ASTM D97    NaN 56  84  104 135
5   -6  NaN NaN ASTM D97    NaN 115 166 224 259
6   24  NaN NaN ASTM D97    NaN 279 303 322 339

现在代码可以工作并给出预期的结果。我只是想以更有效/优雅的方式重写它。

如果不遍历列以指定检查df.iloc[1,i]df.iloc[1,i+1].

标签: pythonpandas

解决方案


推荐阅读