如何将文本框中的文本转换为零和一,如何将两列的内容拆分为许多其他列

埃尔瓦迪

我正在以csv格式处理数据集。观察数为“ 22255”,变量(列)数为“ 35”。

这是我在数据集中有2列的示例(以数据框表示):

df = pd.DataFrame({
    'sector': ['Art & Entertainment',
               'Art & Entertainment',
               'Communication Services',
               'Art & Entertainment',
               'Consumer Discretionary'],
    'region': ['Oregon',
               'SF Bay Area',
               'SF Bay Area',
               'New York City',
               'Los Angeles']
})

我希望对此数据集进行如下准备:

Art & Entertainment   Communication Services   Consumer Discretionary

   1                      0                          0

   1                      0                          0

   0                      1                          0

   1                      0                          0

   0                      0                          1



Portland, Oregon          SF Bay Area                New York City

   1                      0                          0

   0                      1                          0

   0                      1                          0

   0                      0                          1

   0                      0                          0


 Los Angeles

   0

   0

   0

   0

   1

这是我的代码:

# Import packages

import pandas as pd


# Read the dataset

df = pd.read_csv("C:/Fall 2020 - Clarkson University/Capestone Analytics project/Internship - SeedStages/Sales dataset - Vijay.csv",
                 engine='python')


ArtEntertainment = []

Technology = []

CommunicationServices = []

ConsumerDiscretionary = []

###


PortlandOregon = []

SFBayArea = []

NewYorkCity = []

LosAngeles = []

###


for line in df['sector']:

    if line == "Art & Entertainment":
        ArtEntertainment.append(1)
    if line != "Art & Entertainment":
        ArtEntertainment.append(0)

    if line == "Communication Services":
        CommunicationServices.append(1)
    if line != "Communication Services":
        CommunicationServices.append(0)

    if line == "Consumer Discretionary":
        ConsumerDiscretionary.append(1)
    if line != "Consumer Discretionary":
        ConsumerDiscretionary.append(0)

for line in df['region']:

    if line == "Portland, Oregon":
        PortlandOregon.append(1)
    if line != "Portland, Oregon":
        PortlandOregon.append(0)

    if line == "SF Bay Area":
        SFBayArea.append(1)
    if line != "SF Bay Area":
        SFBayArea.append(0)

    if line == "New York City":
        NewYorkCity.append(1)
    if line != "New York City":
        NewYorkCity.append(0)

    if line == "Los Angeles":
        LosAngeles.append(1)
    if line != "Los Angeles":
        LosAngeles.append(0)

    
# Collect all the lists into a dataframe

zippedList =  list(zip( ArtEntertainment,CommunicationServices,ConsumerDiscretionary,
                        PortlandOregon,SFBayArea,NewYorkCity,LosAngeles))

df1 = pd.DataFrame(zippedList, columns = ["ArtEntertainment","CommunicationServices","ConsumerDiscretionary",
                        "PortlandOregon","SFBayArea","NewYorkCity","LosAngeles"])

df = pd.concat([df, df1], axis=1, sort=False)

我想知道是否有可能以更少的代码行数以更专业的方式编写相同的代码。我真的需要你的帮助

muzzyq

如果这是您的起始数据:

import pandas as pd

df = pd.DataFrame({
    'sector': ['Art & Entertainment',
               'Art & Entertainment',
               'Communication Services',
               'Art & Entertainment',
               'Consumer Discretionary'],
    'region': ['Oregon',
               'SF Bay Area',
               'SF Bay Area',
               'New York City',
               'Los Angeles']
})

您的数据框将如下所示:

    sector                    region
0   Art & Entertainment       Oregon
1   Art & Entertainment       SF Bay Area
2   Communication Services    SF Bay Area
3   Art & Entertainment New   York City
4   Consumer Discretionary    Los Angeles

您正在寻找的pandas.get_dummies功能:https : //pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html

dummies = pd.get_dummies(df)

结果dummies数据框将为您提供所需的结果:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>sector_Art &amp; Entertainment</th>
      <th>sector_Communication Services</th>
      <th>sector_Consumer Discretionary</th>
      <th>region_Los Angeles</th>
      <th>region_New York City</th>
      <th>region_Oregon</th>
      <th>region_SF Bay Area</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
    </tr>
    <tr>
      <th>3</th>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>

如果需要,可以按如下所示从列名称中删除sector_region_前缀:

dummies.columns = [col[col.find("_") + 1:] for col in dummies.columns]

这将找到第一个_字符的索引,将其加1,然后从该点开始对字符串进行切片。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数据框中的每一列拆分为两列?

来自分类Dev

如何将文本框转换为字节?

来自分类Dev

如何将文本框文本拆分为列表框C#

来自分类Dev

如何将数据框文本列拆分为布尔列

来自分类Dev

如何将一列拆分为两列,以便使用 SQL 根据其他列维护数据

来自分类Dev

如何将gridview中的一列的总和获取到gridview外部的文本框?

来自分类Dev

如何将文本框的文本与文件内容绑定?

来自分类Dev

如何将文本框中的文本复制到 datagridview1 的 1 列?

来自分类Dev

如何将文本框文本与其他类属性绑定?

来自分类Dev

如何将一列拆分为两列并在Mysql Server中更新

来自分类Dev

如何将文本框值转换为数组并在Java中转换为整数

来自分类Dev

分组后如何将熊猫数据框拆分为许多列

来自分类Dev

如何将文本框的内容保存到文件

来自分类Dev

如何将gridview中一列的总和传递到gridview之外的文本框?

来自分类Dev

如何将文本完全转换为jsonb的PostgreSQL列

来自分类Dev

如何将文本列转换为CSV

来自分类Dev

如何将文本列从DBF文件转换为数字

来自分类Dev

如何将文本完全转换为jsonb的PostgreSQL列

来自分类Dev

如何将行转换为列标题和其他列的值作为数据?

来自分类Dev

如何将两个文本框的内容添加在一起并显示在文本块中

来自分类Dev

如何将xaml绑定到来自其他类的文本框

来自分类Dev

如何将熊猫数据框拆分为多列

来自分类Dev

如何将一列带有超链接的文本转换为 Excel 中的文本 URL?

来自分类Dev

如何将活动控件转换为文本框类型?

来自分类Dev

如何将值文本框类型=数字转换为十进制

来自分类Dev

如何将活动控件转换为文本框类型?

来自分类Dev

如何将按钮单击去抖动延迟转换为文本框按键延迟?

来自分类Dev

如何将一列的值转换为列标题,而其他列的值转换为行?

来自分类Dev

如何将Gridview单元格值转换为另一页上相应的文本框值?

Related 相关文章

  1. 1

    如何将数据框中的每一列拆分为两列?

  2. 2

    如何将文本框转换为字节?

  3. 3

    如何将文本框文本拆分为列表框C#

  4. 4

    如何将数据框文本列拆分为布尔列

  5. 5

    如何将一列拆分为两列,以便使用 SQL 根据其他列维护数据

  6. 6

    如何将gridview中的一列的总和获取到gridview外部的文本框?

  7. 7

    如何将文本框的文本与文件内容绑定?

  8. 8

    如何将文本框中的文本复制到 datagridview1 的 1 列?

  9. 9

    如何将文本框文本与其他类属性绑定?

  10. 10

    如何将一列拆分为两列并在Mysql Server中更新

  11. 11

    如何将文本框值转换为数组并在Java中转换为整数

  12. 12

    分组后如何将熊猫数据框拆分为许多列

  13. 13

    如何将文本框的内容保存到文件

  14. 14

    如何将gridview中一列的总和传递到gridview之外的文本框?

  15. 15

    如何将文本完全转换为jsonb的PostgreSQL列

  16. 16

    如何将文本列转换为CSV

  17. 17

    如何将文本列从DBF文件转换为数字

  18. 18

    如何将文本完全转换为jsonb的PostgreSQL列

  19. 19

    如何将行转换为列标题和其他列的值作为数据?

  20. 20

    如何将两个文本框的内容添加在一起并显示在文本块中

  21. 21

    如何将xaml绑定到来自其他类的文本框

  22. 22

    如何将熊猫数据框拆分为多列

  23. 23

    如何将一列带有超链接的文本转换为 Excel 中的文本 URL?

  24. 24

    如何将活动控件转换为文本框类型?

  25. 25

    如何将值文本框类型=数字转换为十进制

  26. 26

    如何将活动控件转换为文本框类型?

  27. 27

    如何将按钮单击去抖动延迟转换为文本框按键延迟?

  28. 28

    如何将一列的值转换为列标题,而其他列的值转换为行?

  29. 29

    如何将Gridview单元格值转换为另一页上相应的文本框值?

热门标签

归档