如何将单列中具有多个可能值的数据框转换为更多的二进制特征?

时间:2019-03-21 13:20:11

标签: python pandas dataframe

考虑以下熊猫数据框

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- start form -->
<form action="index.php" method="POST" id="myForm">
  <div class="well">

    <div class="form-group">
      <label for="userName">Client's Name or Animal </label>
      <input type="text" class="form-control" name="userName" id="userName" placeholder="Example: John Doe">
    </div>

    <div class="form-group">
      <label for="phrase">Select Phrase or Enter Custom Text Below</label>
      <select class="form-control" id="phrase" name="phrase">
        <option>Please Select</option>
        <option>Custom Phrase [NAME HERE] 1</option>
        <option>Custom Phrase [NAME HERE] 2</option>
        <option>Custom Phrase [NAME HERE] 3</option>
        <option>Custom Phrase [NAME HERE] 4</option>
        <option>Custom Phrase [NAME HERE] 5</option>
      </select>
    </div>


    <div class="form-group">
      <label for="line">Custom Word(s), Sentence or Paragraph</label>
      <textarea rows="4" class="form-control" id="line" name="line" placeholder="Example: I MISS YOU"></textarea>
      <span class="help-block emphasized">500 Words MAX</span>
    </div>

如何将其转换为以下熊猫数据框

In [1]: d = {'ID': [1, 1, 1, 2, 3, 4, 4], 'PROPERTY':['A','B','C','A','D','A','B']}
In [2]: test_df = pd.DataFrame(data=d)
In [3]: test_df
Out[3]: 
   ID PROPERTY
0   1        A
1   1        B
2   1        C
3   2        A
4   3        D
5   4        A
6   4        B

这是针对可变数量的可能功能,而不是本例所示的4个。另外,请注意每个ID现在仅需要在ID列中出现一次。

由于我将处理大量数据,因此我试图有效地实现这一点。如果可能的话,最好避免在这里循环。 感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用pd.crosstab

pd.crosstab(df.ID, df.PROPERTY)


    A   B   C   D
ID              
1   1   1   1   0
2   1   0   0   0
3   0   0   0   1
4   1   1   0   0