Python 3.x 2个数据帧的多列差异

Python 3.x 2个数据帧的多列差异,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我是Python和Pandas的新手,有人能帮我写下面的报告吗 我想报告N列的差异,并创建具有差异值的新列,是否可以使其成为动态的,因为我有30多列。(列是固定数字,行值可以更改) A和B可以是字母数字 用于数据帧的差异: #if columns are strings, first cast it df1 = df1.astype(int) df2 = df2.astype(int) #if first columns are not indices #df1 = df1.set_index

我是Python和Pandas的新手,有人能帮我写下面的报告吗

我想报告N列的差异,并创建具有差异值的新列,是否可以使其成为动态的,因为我有30多列。(列是固定数字,行值可以更改)

A和B可以是字母数字

用于数据帧的差异:

#if columns are strings, first cast it
df1 = df1.astype(int)
df2 = df2.astype(int)

#if first columns are not indices
#df1 = df1.set_index('ID')
#df2 = df2.set_index('ID')

df = df1.join(df2.sub(df1).add_prefix('sum'))
print (df)
     A    B  sumA  sumB
ID                     
0   10  2.0     5   3.0
1   11  3.0     6   5.0
2   12  4.0     7   5.0
或类似:

df = df1.join(df2.sub(df1), rsuffix='sum')
print (df)
     A    B  Asum  Bsum
ID                     
0   10  2.0     5   3.0
1   11  3.0     6   5.0
2   12  4.0     7   5.0
详细信息

print (df2.sub(df1))
    A    B
ID        
0   5  3.0
1   6  5.0
2   7  5.0
与用于数据帧的差异:

#if columns are strings, first cast it
df1 = df1.astype(int)
df2 = df2.astype(int)

#if first columns are not indices
#df1 = df1.set_index('ID')
#df2 = df2.set_index('ID')

df = df1.join(df2.sub(df1).add_prefix('sum'))
print (df)
     A    B  sumA  sumB
ID                     
0   10  2.0     5   3.0
1   11  3.0     6   5.0
2   12  4.0     7   5.0
或类似:

df = df1.join(df2.sub(df1), rsuffix='sum')
print (df)
     A    B  Asum  Bsum
ID                     
0   10  2.0     5   3.0
1   11  3.0     6   5.0
2   12  4.0     7   5.0
详细信息

print (df2.sub(df1))
    A    B
ID        
0   5  3.0
1   6  5.0
2   7  5.0
IIUC

IIUC


'ID'
列实际上应该是一个索引。看看为什么这是个好主意

df1 = df1.set_index('ID')
df2 = df2.set_index('ID')

df = df1.copy()
df[['C', 'D']] = df2 - df1
df['B'] = 0

print(df)
输出

     A  B  C    D
ID               
0   10  0  5  3.0
1   11  0  6  5.0
2   12  0  7  5.0

'ID'
列实际上应该是一个索引。看看为什么这是个好主意

df1 = df1.set_index('ID')
df2 = df2.set_index('ID')

df = df1.copy()
df[['C', 'D']] = df2 - df1
df['B'] = 0

print(df)
输出

     A  B  C    D
ID               
0   10  0  5  3.0
1   11  0  6  5.0
2   12  0  7  5.0

为什么列
B
中的预期输出是
0
?很抱歉,我现在更改了它。感谢您在
B
列中找到预期输出的原因是
0
?很抱歉,我现在更改了它。非常感谢您的帮助,如果列是字符串,最后一件事是什么?当我从Access DB查询这些数据时。您需要
df1=df1.astype(int)
df2=df2.astype(int)
之前。非常感谢您的帮助,如果列是字符串,最后一件事是什么?当我从Access DB查询这些数据时,您需要在查询之前使用
df1=df1.astype(int)
df2=df2.astype(int)