如何转换行的唯一值并标记其出现次数?

2024-09-29 22:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为下面的案子寻找解决办法:

  1. 当df只包含一个维度时,如何透视df,使col值成为列

  2. 以及如何继续,以便在由这些行生成的每列中的结果值为0或1,具体取决于它们在上一列中的出现情况

更容易说明。 所以从这种数据框架来看:

df =

DATA   
cat1
dog1
cat2
dog2
cat3
dog3
...   

对于这种数据帧:

df =

Animal   cat1   dog1   cat2   dog2   cat3   dog3    ...
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...
cat2    0      0      1      0      0      0        ...
dog2    0      0      0      1      0      0        ...
cat3    0      0      0      0      1      0        ...
dog3    0      0      0      0      0      1        ...
...   
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...

首先,我尝试收集所有唯一的值,然后我将其重塑为pd.DataFrame,因为它是一个np数组。然后我试着用pivot。我知道它应该有'index'、'column'和'values'这样的参数,但在我的例子中,我只有一个维度(只有一列)

to_reschape = df.Animal.unique()
type(to_reschape)
dataset = pd.DataFrame(to_reschape)
dataset.pivot()

KeyError: None

Tags: to数据dataframedfdatasetpdpivotcat1
1条回答
网友
1楼 · 发布于 2024-09-29 22:33:54

您可以使用以下命令:

其中df

   DATA
0  cat1
1  dog1
2  cat2
3  dog2
4  cat3
5  dog3
6  dog1

使用

pd.get_dummies(df.set_index(df.DATA), prefix='', prefix_sep='')

输出:

      cat1  cat2  cat3  dog1  dog2  dog3
DATA                                    
cat1     1     0     0     0     0     0
dog1     0     0     0     1     0     0
cat2     0     1     0     0     0     0
dog2     0     0     0     0     1     0
cat3     0     0     1     0     0     0
dog3     0     0     0     0     0     1
dog1     0     0     0     1     0     0

相关问题 更多 >

    热门问题