【发布时间】:2021-02-17 17:29:14
【问题描述】:
我有一个 for 循环,它在第一次迭代中生成一个数据框,例如:
pd.DataFrame(columns = ["Al", "Si", "K", "Th"], data = [[1,2,3,4]])
第二次迭代产生的数据帧如下所示:
pd.DataFrame(columns = ["W", "Cu"], data = [[5,6]])
列和数据变量都是在每次迭代中通过循环生成的。 我希望能够在执行每个数据帧的外部连接的循环末尾添加一些内容,以便最终结果是:
pd.DataFrame(columns = ["Al", "Si", "K", "Th", "W", "Cu"], data = [[1,2,3,4, 0,0], [0,0,0,0, 5,6]])
我尝试过追加、连接和外连接,但无法破解,因为我需要在每次迭代时实时更新最终数据帧,并且无法对其进行排序。
另外,值得一提的是,我无法预先定义总量列,计算的元素取决于数据并在循环期间创建。
编辑: 这是循环:
formulas = ("NaAlSiO2", "WCu2")
for form in formulas:
s = re.findall('([A-Z][a-z]?)([0-9]*)', form)
perc_weight = []
atoms = []
for elem, count in s:
total_weight = molecular_w_calc(form)
atoms.append(elem)
perc_weight.append((Element_mass[elem]*100*int(count)) / total_weight)
perc_df = pd.DataFrame(columns = np.array(atoms), data = [perc_weight])
Element_mass 是一个字典,其中包含每个原子的值。
perc_df 是每次迭代产生的数据帧。
molecular_w_calc 返回单个值。
谢谢!
【问题讨论】:
-
我不明白您所说的“每次迭代中最终数据帧的实时更新”是什么意思。但我怀疑您并不想每次通过循环都创建一个单独的 DataFrame 对象。无论如何,这将有助于显示您正在使用的实际代码。
-
@KarlKnechtel 我已将循环发布为编辑
标签: python pandas for-loop concatenation