我有两个像这样的熊猫数据框。标头是指示性的-数据帧实际上没有任何标头(标题)。
**Dataframe 1**
Browser_name Count
IE 4
Chrome 7
Firefox 6
DDG 2
**Dataframe 2**
Browser_name Count
IE 6
Chrome 18
Firefox 9
DDG 4
我想要的输出是一个数据帧,第一列中具有浏览器名称,第二列中其计数之和,如下所示。
**Final_Dataframe**
Browser_name Count
IE 10
Chrome 25
Firefox 15
DDG 6
我尝试使用两个数据帧的concat,然后计划使用数据透视,但是我被concat自己卡住了。它为每一行添加了空列,因此无法继续进行下一步。
感谢所有帮助。
答案 0 :(得分:1)
如果有2列,则DataFrame解决方案是按第一列创建索引,并按位置填充来创建Series
,然后使用Series.add
,最后使用Series.reset_index
:
s1 = df1.set_index(df1.columns[0]).iloc[:, 0]
s2 = df2.set_index(df2.columns[0]).iloc[:, 0]
df = s1.add(s2).reset_index()
df.columns = ['Browser_name','Count']
或首先设置列名称:
df1.columns = ['Browser_name','Count']
df2.columns = ['Browser_name','Count']
s1 = df1.set_index('Browser_name')['Count']
s2 = df2.set_index('Browser_name')['Count']
df = s1.add(s2).reset_index()
print (df)
Browser_name Count
0 IE 10
1 Chrome 25
2 Firefox 15
3 DDG 6
如果输入为Series
:
print (type(df1))
<class 'pandas.core.series.Series'>
print (type(df2))
<class 'pandas.core.series.Series'>
df = df1.add(df2).reset_index()
df.columns = ['Browser_name','Count']
print (df)
Browser_name Count
0 IE 10
1 Chrome 25
2 Firefox 15
3 DDG 6
答案 1 :(得分:1)
只需添加两个数据框
df1['total'] = df1.iloc[:,1]+df2.iloc[:,1]
df3 = df1.iloc[:,[0,2]]
df3.columns = ['Browser_name','Count']
df3.columns = ['Browser_name','Count']
答案 2 :(得分:0)
在这种情况下,我们可以使用内置方法 add 。
import pandas as pd
df1 = pd.DataFrame([{'Browser_name':"IE","Count":4},{'Browser_name':"Chrome","Count":7},{"Browser_name":"Firefox","Count":6}])
df2 = pd.DataFrame([{'Browser_name':"IE","Count":6},{'Browser_name':"Chrome","Count":18},{"Browser_name":"Firefox","Count":15}])
sumData = df1["Count"].add(df2["Count"],fill_value=0)
sumData = pd.DataFrame({'Browser_name':df2["Browser_name"], 'Count':sumData.values})
print(sumData)
=========
Browser_name Count
0 IE 10
1 Chrome 25
2 Firefox 21