python - 如何根据其他列中的两个条件在特定位置插入多列
问题描述
我需要重写一些我已经拥有的代码。
它插入缺少“标准偏差”列的列。为此,它会检查前一列是否为“变量”列,以及其后是否已经存在“标准偏差”列。
现在我正在使用一个循环遍历列检查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]
.
解决方案
推荐阅读
- python - 从字符串列表中删除空格变化的 Python 最佳实践
- mysql - 在 phpMyAdmin 上保存数据库 - mySQL
- pandas - 在 read_csv 中使用 dtype 对象会引发 UnboundLocalError
- tensorflow - 记录消息分类/分组并为每个组查找人类可读的模式
- google-chrome - 如何使用 CLI 在 Chromebox 上禁用有问题的“Chrome 媒体路由器”(Chromecast) 扩展?
- google-sheets - 我无法正确使用 IMPORTXML
- ruby-on-rails - Rails 同时启动多个涉及循环的进程
- tableau-api - 有没有人将 CKAN 与 Qlik、Tableau 和 R 集成?你是怎么做到的?
- centos - yum/dnf 错误:无法为 repo 下载元数据
- java - 如何从 SD 加载和写入数据?