Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫透视出唯一的列 我有一个大数据包,有两个组合,我考虑唯一的标识符,然后有一个单独的列“C”,它们可以有不同的值。因此,同一个唯一标识符可以重复其具有的不同“C”值的次数 import pandas as pd data = {'A' : ['000001','000001','000001','000001','000002','000002','000003'], 'B' : ['1A','1A','1C','1D','1A','1A','1D'], 'C' : ['003','012','016','003','020','012','053']} df = pd.DataFrame(data) +-------------------+ | A | B | C | +-------------------+ | 000001 | 1A | 003 | | 000001 | 1A | 012 | | 000001 | 1C | 016 | | 000001 | 1D | 003 | | 000002 | 1A | 020 | | 000002 | 1A | 012 | | 000003 | 1D | 053 | +-------------------+_Python_Pandas_Dataframe_Pivot_Dummy Variable - Fatal编程技术网

Python 熊猫透视出唯一的列 我有一个大数据包,有两个组合,我考虑唯一的标识符,然后有一个单独的列“C”,它们可以有不同的值。因此,同一个唯一标识符可以重复其具有的不同“C”值的次数 import pandas as pd data = {'A' : ['000001','000001','000001','000001','000002','000002','000003'], 'B' : ['1A','1A','1C','1D','1A','1A','1D'], 'C' : ['003','012','016','003','020','012','053']} df = pd.DataFrame(data) +-------------------+ | A | B | C | +-------------------+ | 000001 | 1A | 003 | | 000001 | 1A | 012 | | 000001 | 1C | 016 | | 000001 | 1D | 003 | | 000002 | 1A | 020 | | 000002 | 1A | 012 | | 000003 | 1D | 053 | +-------------------+

Python 熊猫透视出唯一的列 我有一个大数据包,有两个组合,我考虑唯一的标识符,然后有一个单独的列“C”,它们可以有不同的值。因此,同一个唯一标识符可以重复其具有的不同“C”值的次数 import pandas as pd data = {'A' : ['000001','000001','000001','000001','000002','000002','000003'], 'B' : ['1A','1A','1C','1D','1A','1A','1D'], 'C' : ['003','012','016','003','020','012','053']} df = pd.DataFrame(data) +-------------------+ | A | B | C | +-------------------+ | 000001 | 1A | 003 | | 000001 | 1A | 012 | | 000001 | 1C | 016 | | 000001 | 1D | 003 | | 000002 | 1A | 020 | | 000002 | 1A | 012 | | 000003 | 1D | 053 | +-------------------+,python,pandas,dataframe,pivot,dummy-variable,Python,Pandas,Dataframe,Pivot,Dummy Variable,我想根据A、B对行进行分组,然后将C列旋转出来,并将它们转化为假人。这就是我需要最终输出的样子: +----------------------------------------------------+ | A | B | C_003 | C_012 | C_016 | C_020 |C_053 | +----------------------------------------------------+ | 000001 | 1A | 1 | 1 | 0

我想根据A、B对行进行分组,然后将C列旋转出来,并将它们转化为假人。这就是我需要最终输出的样子:

+----------------------------------------------------+
| A      | B  | C_003 | C_012 | C_016 | C_020 |C_053 |
+----------------------------------------------------+
| 000001 | 1A | 1     | 1     | 0     | 0     | 0    | 
| 000001 | 1C | 0     | 0     | 1     | 0     | 0    | 
| 000001 | 1D | 1     | 0     | 0     | 0     | 0    | 
| 000002 | 1A | 0     | 1     | 0     | 1     | 0    | 
| 000003 | 1D | 0     | 0     | 0     | 0     | 1    | 
+----------------------------------------------------+

我对数据透视表很在行,但也不确定数据透视表是否能将我的数据透视到所需的输出。我正在寻找一个超级高效的过程,因为实际数据在标识符中有多个列(如a、B)、数千个可能的C值和数百万行。有什么想法吗?

大熊猫。让假人来营救

pd.get_dummies(df.set_index(['A', 'B'])).reset_index()

        A   B  C_003  C_012  C_016  C_020  C_053
0  000001  1A      1      0      0      0      0
1  000001  1A      0      1      0      0      0
2  000001  1C      0      0      1      0      0
3  000001  1D      1      0      0      0      0
4  000002  1A      0      0      0      1      0
5  000002  1A      0      1      0      0      0
6  000003  1D      0      0      0      0      1
或者。。。(感谢温家宝的提醒)

与一起使用,根据重塑形状,并通过以下方式过滤所有高于
1
的值:


你知道我记得我最喜欢的功能是什么吗

pd.crosstab([df.A,df.B],df.C).reset_index()
Out[70]: 
C       A   B  003  012  016  020  053
0  000001  1A    1    1    0    0    0
1  000001  1C    0    0    1    0    0
2  000001  1D    1    0    0    0    0
3  000002  1A    0    1    0    1    0
4  000003  1D    0    0    0    0    1
通过使用
str
get\u假人

df.set_index(['A','B']).C.str.get_dummies().add_prefix('C_').sum(level=[0,1]).reset_index()
Out[60]: 
        A   B  C_003  C_012  C_016  C_020  C_053
0  000001  1A      1      1      0      0      0
1  000001  1C      0      0      1      0      0
2  000001  1D      1      0      0      0      0
3  000002  1A      0      1      0      1      0
4  000003  1D      0      0      0      0      1

我还记得你最喜欢的功能。只有在你写了之后我才把它放在我的帖子里,直到现在我才注意到(-:。第二个选项似乎工作得很好。谢谢!
pd.crosstab([df.A,df.B],df.C).reset_index()
Out[70]: 
C       A   B  003  012  016  020  053
0  000001  1A    1    1    0    0    0
1  000001  1C    0    0    1    0    0
2  000001  1D    1    0    0    0    0
3  000002  1A    0    1    0    1    0
4  000003  1D    0    0    0    0    1
df.set_index(['A','B']).C.str.get_dummies().add_prefix('C_').sum(level=[0,1]).reset_index()
Out[60]: 
        A   B  C_003  C_012  C_016  C_020  C_053
0  000001  1A      1      1      0      0      0
1  000001  1C      0      0      1      0      0
2  000001  1D      1      0      0      0      0
3  000002  1A      0      1      0      1      0
4  000003  1D      0      0      0      0      1