Python 从不包括第一列的另一个数据帧中减去一个数据帧
我必须使用相同的列创建数据帧。我的任务应该是从df_nap中减去df_tot,而不触及第一列('A')。 最简单的解决方案是什么 谢谢大家!Python 从不包括第一列的另一个数据帧中减去一个数据帧,python,pandas,Python,Pandas,我必须使用相同的列创建数据帧。我的任务应该是从df_nap中减去df_tot,而不触及第一列('A')。 最简单的解决方案是什么 谢谢大家! import numpy as np import pandas as pd df_tot = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD')) df_nap = pd.DataFrame(np.random.randint(10, size=(3,4)), col
import numpy as np
import pandas as pd
df_tot = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
df_nap = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
只需减去整个数据帧,然后将所需的值重新分配给波长列
result = df_tot - df_nap
result['Wavelength'] = df_tot['Wavelength']
比如说,
import numpy as np
import pandas as pd
df_tot = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
df_nap = pd.DataFrame(np.random.randint(10, size=(3,4)), columns=list('ABCD'))
# df_tot['A'] = df_nap['A'] # using column A as the "Wavelength" column
result = df_tot - df_nap
result['A'] = df_tot['A']
或者,如果波长列不是数字,您可以 减去除波长以外的所有值,然后重新指定该列:
result = df_tot.drop('Wavelength', axis=1) - df_nap.drop('Wavelength', axis=1)
result['Wavelength'] = df_tot['Wavelength']
在使用之前,为两个数据帧设置公共索引: 如果需要将“波长”作为一个系列而不是索引,则可以调用结果的
reset\u index
:
res = res.reset_index()
但是,将唯一的行标识符存储为索引而不是序列有一定的好处。例如,更高效的查找和合并功能。您还可以使用
join
和iloc
:
df_tot.iloc[:,:1].join(df_tot.iloc[:,1:]-df_nap.iloc[:,1:])
但这意味着列的顺序相同,“波长”是第一个
df_tot.iloc[:,:1].join(df_tot.iloc[:,1:]-df_nap.iloc[:,1:])