Как удалить столбцы в группе по Pandas - PullRequest
0 голосов
/ 01 мая 2019

Попытка удалить столбец данных, который больше не нужен.

Я пытался использовать .drop, но ничего не могу сказать.

df=df.groupby(df['Distributor'])['Tickets Sold'].sum()
df1=df[df.div(df.sum()).lt(0.01)]
df2=df.drop(df1.index)
yourdf=pd.concat([df2,pd.Series(df1.sum(),index=['Others'])])

yourdf = yourdf.sort_values(ascending=False)
print(yourdf)
yourdf2 = yourdf.drop(columns=['Tickets Sold'])
print(yourdf2)

Вместо этого.

20th Century Fox      141367982
Focus Features         18799261
Lionsgate              75834308
Paramount Pictures     86302817
STX Entertainment      22606674
Sony Pictures         102746480
Universal             159556790
Walt Disney           315655340
Warner Bros.          216426845
Others                 74618013

Тогда в это.

Walt Disney           315655340
Warner Bros.          216426845
Universal             159556790
20th Century Fox      141367982
Sony Pictures         102746480
Paramount Pictures     86302817
Lionsgate              75834308
Others                 74618013
STX Entertainment      22606674
Focus Features         18799261

Мне нужно это.

Walt Disney          
Warner Bros.         
Universal             
20th Century Fox      
Sony Pictures         
Paramount Pictures     
Lionsgate              
Others                 
STX Entertainment      
Focus Features

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Глядя на ваши комментарии и читая ваш код, я думаю, что закулисная проблема заключается в том, что вы слишком часто приводите / изменяете переменные. Это приводит к перезаписи / потере того, что вы ищете, когда вам это нужно. Не беспокойтесь, я уверен, что вы находитесь на этапе 1 вашего проекта и проводите тестирование. Но я хотел указать это на всякий случай. Вы всегда можете обойти эту проблему, используя ключевое слово inplace=True.

В любом случае, как сказал Брайан Кохан, вам нужно исключить ось с помощью axis=1.

Если взять твой код, это будет выглядеть так.

df = pd.DataFrame(df.groupby(df['Distributor'])['Tickets Sold'].sum()); display(df)
df = df.sort_values(by="Tickets Sold", ascending=False); display(df)
df = df.drop("Tickets Sold", axis = 1); display(df)
# See here ------------------^
|--------------------+--------------|
|                    | Tickets Sold |
|--------------------+--------------|
| Distributor        |              |
|--------------------+--------------|
| 20th Century Fox   |    141367982 |
| Focus Features     |     18799261 |
| Lionsgate          |     75834308 |
| Paramount Pictures |     86302817 |
| STX Entertainment  |     22606674 |
| Sony Pictures      |    102746480 |
| Universal          |    159556790 |
| Walt Disney        |    315655340 |
| Warner Bros.       |    216426845 |
| Others             |     74618013 |
|--------------------+--------------|

|--------------------+--------------|
|                    | Tickets Sold |
|--------------------+--------------|
| Distributor        |              |
|--------------------+--------------|
| Walt Disney        |    315655340 |
| Warner Bros.       |    216426845 |
| Universal          |    159556790 |
| 20th Century Fox   |    141367982 |
| Sony Pictures      |    102746480 |
| Paramount Pictures |     86302817 |
| Lionsgate          |     75834308 |
| Others             |     74618013 |
| STX Entertainment  |     22606674 |
| Focus Features     |     18799261 |
|--------------------+--------------|

|--------------------+
|                    |
|--------------------+
| Distributor        |
|--------------------+
| Walt Disney        |
| Warner Bros.       |
| Universal          |
| 20th Century Fox   |
| Sony Pictures      |
| Paramount Pictures |
| Lionsgate          |
| Others             |
| STX Entertainment  |
| Focus Features     |
|--------------------|
0 голосов
/ 01 мая 2019

Попробуйте указать axis=1, чтобы сообщить, что вы хотите удалить столбец, а не индекс.

yourdf.drop('Tickets Sold', axis=1, inplace=True)
print(yourdf)
#           Distributor
# 0    20th Century Fox
# 1      Focus Features
# 2           Lionsgate
# 3  Paramount Pictures
# 4   STX Entertainment
# 5       Sony Pictures
# 6           Universal
# 7         Walt Disney
# 8         Warner Bros
# 9              Others

Если вы действительно хотите сохранить yourdf и получить еще один yourdf2, тогда

yourdf2 = yourdf.drop('Tickets Sold', axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...