Python 两个数据帧的特定列的和值

Python 两个数据帧的特定列的和值,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我想对两个dataframe的特定列求和 例如: 所以我只想求a,b和d列的和,而不是c列 输出: a b c d 2 2 dd 2 2 2 ee 2 2 3 ff 2 有什么解决办法吗? 谢谢试试这个: column_names = df1.columns.tolist() columnTotal_dict = {} for name in colum_names: try: df1[[name]] = df1[[name]].astype(int)

我想对两个dataframe的特定列求和

例如:

所以我只想求a,b和d列的和,而不是c列

输出:

a b c  d

2 2 dd 2

2 2 ee 2

2 3 ff 2
有什么解决办法吗? 谢谢

试试这个:

column_names = df1.columns.tolist()

columnTotal_dict = {}

for name in colum_names:
    try:
        df1[[name]] = df1[[name]].astype(int)
        df2[[name]] = df2[[name]].astype(int)

        sumCol_a_df1 = df1['a'].sum()
        sumCol_a_df2 = df2['a'].sum()
        columnTotal_dict[name] = sumCol_a_df1 + sumCol_a_df2
    except ValueError:
        print("Data in this column are not of type int. Skipping")

试试这个:

column_names = df1.columns.tolist()

columnTotal_dict = {}

for name in colum_names:
    try:
        df1[[name]] = df1[[name]].astype(int)
        df2[[name]] = df2[[name]].astype(int)

        sumCol_a_df1 = df1['a'].sum()
        sumCol_a_df2 = df2['a'].sum()
        columnTotal_dict[name] = sumCol_a_df1 + sumCol_a_df2
    except ValueError:
        print("Data in this column are not of type int. Skipping")

您可以尝试(假设列
c
可以取自第一个数据帧)

>掩码=['a','b','d']
>>>df_out=df1[掩码]+df2[掩码]
>>>df_out['c']=df1['c']
>>>德福
a、b、d、c
02日
1 2 ee
二楼
您可以尝试(假设列
c
可以取自第一个数据帧)

>掩码=['a','b','d']
>>>df_out=df1[掩码]+df2[掩码]
>>>df_out['c']=df1['c']
>>>德福
a、b、d、c
02日
1 2 ee
二楼
我使用add方法和方法来获得结果。允许基于数据类型进行操作

(df1
.add(df2.select_dtypes(include='number'))
.combine_first(df1)
)

    a   b   c   d
0   2   2   dd  2
1   2   2   ee  2
2   2   2   ff  2
我使用add方法和方法来获得结果。允许基于数据类型进行操作

(df1
.add(df2.select_dtypes(include='number'))
.combine_first(df1)
)

    a   b   c   d
0   2   2   dd  2
1   2   2   ee  2
2   2   2   ff  2


您需要a列、b列和c列的总和。是吗?@PrashantKumar:是的,我想把df1[a]和df2[a]相加,以此类推……注意到你最后一行的b列有3。我认为应该是2。您可以再次检查数据以确定。请检查更新的答案。那应该行。你需要a列,b列,c列的和。是吗?@PrashantKumar:是的,我想把df1[a]和df2[a]相加,以此类推……注意到你最后一行的b列有3。我认为应该是2。您可以再次检查数据以确定。请检查更新的答案。应该可以。我不想指定列名,bcz列名是动态的。。在我的例子中,这不起作用。你可以在列表中获取列名,然后对其进行迭代以获得总和。我将编辑答案。感谢Prashant提供的解决方案。我更喜欢@sammywemmy解决方案,它更具动态性。没问题@gaurav。好在你的问题解决了。我不想指定列名,bcz列名是动态的。。在我的例子中,这不起作用。你可以在列表中获取列名,然后对其进行迭代以获得总和。我将编辑答案。感谢Prashant提供的解决方案。我更喜欢@sammywemmy解决方案,它更具动态性。没问题@gaurav。好的是你的问题已经解决了。如果列有数值,这个解决方案是完美的。如果我从csv文件读取数据,它能工作吗?是的。您还可以通过使用read_csv函数中的dtype选项来确保数据类型。是的,我刚刚运行了演示并获得了正确的输出。谢谢如果列有数值,这个解决方案是完美的。如果我从csv文件中读取数据,它能工作吗?是的。您还可以通过使用read_csv函数中的dtype选项来确保数据类型。是的,我刚刚运行了演示并获得了正确的输出。谢谢