Pandas行值到列,然后1或0,如果它是行中的值或不

时间:2017-10-24 15:33:04

标签: python pandas dataframe

因为我是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。

3 个答案:

答案 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