我似乎找不到答案:
所以我有一个很大的数据集,其中有一个列(TCFM,BLE,IA&C和II&T)。
我想知道如何为每个类别(“ TCFM”,“ IA&C”,nan,“ II&T”,“ BLE”)创建新列。保留所有原始数据吗?
Product Views Revenue SEO Entries Category
32 -123.29 5 TCFM
6 91.55 1 IA&C
这将继续进行4000行
grouped = impact.groupby('Category')
我知道我需要对其进行分组,但是不确定如何将其实现到数据框中。
因此基本上在原始数据帧上添加了四列
答案 0 :(得分:0)
您期望这样的事情吗?
转换
Product Views Revenue SEO Entries Category
0 53 19 73 BLE
1 41 56 52 TCFM
2 5 92 36 None
3 18 57 38 II&T
4 92 15 92 II&T
到
Product Views Revenue SEO Entries TCFM IA&C NaN II&T BLE
0 53 19 73 False False False False True
1 41 56 52 True False False False False
2 5 92 36 False False False False False
3 18 57 38 False False False True False
4 92 15 92 False False False True False
用于生成示例数据框的代码
import pandas as pd
import numpy as np
import random
categories = ['TCFM', 'IA&C', None, 'II&T', 'BLE']
cols = ['Product Views', 'Revenue', 'SEO Entries', 'Category']
data = {}
for i in range(3):
data[cols[i]] = np.random.randint(0, 100, size=10)
data['Category'] = random.choices(categories, k=10)
df = pd.DataFrame(data, columns=cols)
print(df.head())
生成新列的代码
for item in categories:
df[item] = np.where(df.Category == item, True, False)
df1 = df.drop(['Category'], axis=1)
print(df1.head())
此行为每个category
项目创建新列。
df[item] = np.where(df.Category == item, True, False)
如果True
列的值等于item,则将值设置为Category
,否则将其设置为False
https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html