追加新的不完整行数据后自动填充dataframe列

2024-04-29 14:59:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由3列组成的数据框,第1列是Sympy符号,第2列是与任意astropy单位关联的值,第3列是以SI astropy单位表示的值。在笔记本环境中使用数据帧时,我偶尔会通过df.append添加新符号(第1列)和值(第2列),并在分析过程中查看新表。我希望生成的输出根据列2自动填充列3,而不是使用N/A填充列3。即使用excel tables的类似工作流

为了简单起见,我们将忽略整个单位的事情。这是我所拥有的

import pandas as pd
df = pd.DataFrame([[1,3],[2,4],[5,2]],columns = ['A','B'])
df['Sum'] = df.apply(lambda x: x['A']+x['B'], axis=1)
df['Product'] = df.apply(lambda x: x['A']*x['B'], axis=1)
df = df.append({'A':9,'B':2}, ignore_index=True)
df

以下是输出:

     A    B  Sum  Product
0  1.0  3.0  4.0      3.0
1  2.0  4.0  6.0      8.0
2  5.0  2.0  7.0     10.0
3  9.0  2.0  NaN      NaN

以下是我所期望的:

     A    B  Sum  Product
0  1.0  3.0  4.0      3.0
1  2.0  4.0  6.0      8.0
2  5.0  2.0  7.0     10.0
3  9.0  2.0  11.0    18.0

有没有一种方法可以在不重新应用两个lambda函数的情况下获得预期的结果


Tags: 数据lambdadf符号单位nanproductpd
1条回答
网友
1楼 · 发布于 2024-04-29 14:59:27

如果你在寻找能够自动计算你想要的值的东西,我认为没有简单的方法可以做到这一点。 您可以做的最简单的事情是在每次添加新行时重新应用函数

或者你可以写df.transform(lambda x: """operation you need"""),但这基本上是你想要避免的

相关问题 更多 >