我有一个由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函数的情况下获得预期的结果
如果你在寻找能够自动计算你想要的值的东西,我认为没有简单的方法可以做到这一点。 您可以做的最简单的事情是在每次添加新行时重新应用函数
或者你可以写
df.transform(lambda x: """operation you need""")
,但这基本上是你想要避免的相关问题 更多 >
编程相关推荐