我有一个大型数据框(总共50列),其中包含“Project_Type”列,其中包含5种不同类型的项目。项目类型可以是“项目类型1”,“项目类型2”,“项目类型3”,“项目类型4”或“项目类型5”。我有其他列具有各种性能度量(所有整数)所以我认为我需要将新列中的每个“Project_Type”规范化为1(如果为真)或0(如果为假)然后我可以运行.corr()在项目类型和绩效测量上,看是否存在任何相关性(例如某些项目类型成本更高,影响更大等)
我可以手动创建5个新的空白列
df ['Proj1Normalize'] =“”
df ['Proj2Normalize'] =“”
等...
然后根据true或false获取值1或0,但是有更快的方法可以一次添加具有特定标题的大量空白列吗?这个例子很容易手动完成,但我遇到了一些问题,我需要一次制作20多个新的“规范化”列,而且手动创建它们太费时了。
如果有人能够解释一次使用多个不同值对一列进行标准化的有效方法,也会有所帮助。
我试过df ['Proj1Normalize','Proj2Normalize','Proj3Normalize等等] =“”但这不起作用。 我试着引用这个 - Pandas: Add multiple empty columns to DataFrame - 但我不希望我的列只是在第一个例子中命名一个字符名称。
示例:
现在我有:
ProjectType Dollars_Spent员工
0 Proj 1 1000 10
1 Proj 2 1800 12
2 Proj 1 800 14
3 Proj 3 980 5
我希望:
ProjectType Dollars_Spent Employees Proj1 Proj 2 Proj3
0 Proj 1 1000 10 1 0 0
1 Proj 2 1800 12 0 1 0
2 Proj 1 800 14 1 0 0
3 Proj 3 980 5 0 0 1
任何帮助都会很棒。
答案 0 :(得分:0)
如果您的目标是将分类列编码为1/0,则可以使用pandas.get_dummy
来执行此操作。
例如:
df = pd.DataFrame({'Type':[1,2,3,2]})
new_df = pd.get_dummies(df,columns=['Type'])
Out[6]:
Type_1 Type_2 Type_3
0 1.0 0.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 1.0
3 0.0 1.0 0.0
答案 1 :(得分:0)
import pandas
df = pandas.DataFrame(data={'ProjectType':['Proj 1','Proj 2','Proj 1','Proj 3'], 'Dollars_Spent':[1000, 1800,800,980], 'Employees':[10, 12, 14, 5]},columns=('ProjectType','Dollars_Spent','Employees'))
df_New = pandas.concat([df, pandas.get_dummies(df['ProjectType'])], axis=1)
print(df_New)
ProjectType Dollars_Spent Employees Proj 1 Proj 2 Proj 3
0 Proj 1 1000 10 1 0 0
1 Proj 2 1800 12 0 1 0
2 Proj 1 800 14 1 0 0
3 Proj 3 980 5 0 0 1
If there is no need of ProjectType column, then can use: del df_New ['ProjectType']
如果您想了解有关get_dummies的其他信息,请查看https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html