Pandas Concat添加空单元格/列

时间:2019-04-26 05:39:39

标签: python pandas dataframe

我有两个像这样的熊猫数据框。标头是指示性的-数据帧实际上没有任何标头(标题)。

**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自己卡住了。它为每一行添加了空列,因此无法继续进行下一步。

感谢所有帮助。

3 个答案:

答案 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