我怎样才能不硬编码的情况下从自己之前的列中减去很多列呢?我可以通过硬编码来实现,如下所示:
import pandas as pd
df = pd.DataFrame({"a":[1,2,3,4],"b":[1,3,5,6],"c":[6,7,8,9]})
df['a_diff'] = df['a']-16
df['b_diff'] = df['b']-df['a']
df['c_diff'] = df['c']-df['b']
我知道有一种方法可以通过移位函数来实现行方式。我们可以将其作为列方式吗?我需要对100列使用此技术,所以我宁愿使用Python方法而不是硬编码。请注意,“a_diff”是故意从常量中减去的,因为我也必须在代码中通过常量减去该列。
谢谢你,
山姆
2条答案
按热度按时间bvhaajcl1#
使用
diff
和combine_first
(或fillna
,但有一些限制!),然后使用add_suffix
和join
重命名为原始DataFrame:或者,如果您确定除“a”以外的列中没有NaN:
输出:
qzwqbdag2#
使用
DataFrame.diff
,第一列设置为DataFrame.fillna
和DataFrame.add_suffix
,最后一列附加到原始列的设置为DataFrame.join
:未指定第一列硬编码的解决方案:
或按差值设置第一列:
原始DataFrame中不存在缺失值时的解决方案:
一个三个三个一个