因为我是Pandas的新手,对于如何处理这个问题有点困惑。
我的数据框看起来像这样:
Col1 Col2
Val1 100
Val2 150
Val3 200
我想要得到的就是这个
Val1 Val2 Val3 Col2
1 0 0 100
0 1 0 150
0 0 1 200
因此,如果该值存在于该行,则其新列中的值应为1。
答案 0 :(得分:1)
使用get_dummies
In [5696]: pd.get_dummies(df, prefix='', prefix_sep='')
Out[5696]:
Col2 Val1 Val2 Val3
0 100 1 0 0
1 150 0 1 0
2 200 0 0 1
或者,
In [5701]: df.Col1.str.get_dummies().join(df['Col2'])
# or df[['Col2']].join(df.Col1.str.get_dummies())
Out[5701]:
Val1 Val2 Val3 Col2
0 1 0 0 100
1 0 1 0 150
2 0 0 1 200
答案 1 :(得分:0)
我认为最好的方法是将数字转换为字符串,然后循环遍历它们,检查每个字符是否为“0”。我现在必须运行,但我今天晚些时候会使用代码编辑这篇文章。 SRY
答案 2 :(得分:0)
使用$dbhost = "localhost";
$dbuser = "root";
$dbpass = "dbpass";
$dbname = "dbname";
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
mysqli_query($conn,"SET CHARACTER SET 'utf8'");
mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");
crosstab