Pandas Concat Добавление пустых ячеек / столбцов - PullRequest
1 голос
/ 26 апреля 2019

У меня есть два кадра данных панд, которые выглядят следующим образом.Заголовки являются ориентировочными - на самом деле у фреймов данных нет никаких заголовков (заголовков).

**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 ]

1 голос
/ 26 апреля 2019

просто добавьте два фрейма данных

df1['total'] = df1.iloc[:,1]+df2.iloc[:,1]
df3 = df1.iloc[:,[0,2]]
df3.columns = ['Browser_name','Count']
df3.columns = ['Browser_name','Count']
1 голос
/ 26 апреля 2019

Если имеется 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
0 голосов
/ 26 апреля 2019

В этом случае мы можем использовать встроенный метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...