假设我有这样一个数据帧:
df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]})
我们定义一个新的列,像这样:
df["C"] = df["A"] + df["B"]
则C
列的值为[5, 7, 9]
。
但是,假设我添加了一个新行,4
的值为A
,7
的值为B
,那么C
列的值将为[5, 7, 9, NaN]
。
如何定义当向数据框架添加内容时自动应用计算规则的列?还是有"重新计算全部"?某种函数?
Python与其他编程语言的区别在于它是解释的而不是编译的。这意味着代码是逐行执行的。
因此,在您的情况下,当您在df
的末尾添加一行时,将不会有重新计算。
df["C"] = df["A"] + df["B"] #executed firstly
df.loc[len(df.index)] = [4, 7, np.NaN] #executed secondly
print(df)
A B C
0 1.0 4.0 5.0
1 2.0 5.0 7.0
2 3.0 6.0 9.0
3 4.0 7.0 NaN
除非您通过添加与之前相同的行来强制自己重新计算:
df["C"] = df["A"] + df["B"]
df.loc[len(df.index)] = [4, 7, np.NaN]
df["C"] = df["A"] + df["B"] # <------added here to re-calculate
print(df)
A B C
0 1.0 4.0 5.0
1 2.0 5.0 7.0
2 3.0 6.0 9.0
3 4.0 7.0 11.0
如果您使用的是Jupyter
之类的笔记本,则需要将df["C"] = df["A"] + df["B"]
放在单独的单元格中,并在附加/添加每一行后重新运行它。