合并数据帧中的多个列

时间:2016-03-07 19:15:31

标签: python-3.x pandas

我有这样的数据框:

dataf = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'], 'C': ['c', 'c',np.nan]})


get_dummies(df):

   A_a     A_b     B_a     B_b     B_c    C_c
0  1       0       0       1       0      1
1  0       1       1       0       0      1
2  1       0       0       0       1      0

我希望dataframe的所有常见属性都在一列中。这里对于属性'a',我们有两列,即A_a和amp; B_a。我希望在一个名为'a'的列中将值设置为A_a&的UNION。 B_a。它应该适用于所有类似的属性。它应该看起来像:

   a       b      c 
0  1       1      1  
1  1       1      1  
2  1       0      1

原来,我有数百万个属性,数百万+行。因此,通用公式将起作用。感谢。

1 个答案:

答案 0 :(得分:0)

您可以将参数prefixprefix_sep添加到get_dummies,然后columns添加import pandas as pd import numpy as np import io dataf = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'], 'C': ['c', 'c',np.nan]}) print dataf A B C 0 a b c 1 b a c 2 a c NaN df = pd.get_dummies(dataf, prefix="", prefix_sep="") print df a b a b c c 0 1 0 0 1 0 1 1 0 1 1 0 0 1 2 1 0 0 0 1 0 print df.groupby(df.columns, axis=1).sum() a b c 0 1 1 1 1 1 1 1 2 1 0 1 groupby

lenght = 1

编辑sum,谢谢John Galt:

如果值为df = pd.get_dummies(dataf) print df A_a A_b B_a B_b B_c C_c 0 1 0 0 1 0 1 1 0 1 1 0 0 1 2 1 0 0 0 1 0 print df.groupby(df.columns.str[-1:], axis=1).any().astype(int) a b c 0 1 1 1 1 1 1 1 2 1 0 1 (如样本中所示):

            File file = new File( ".txt" );
        Scanner in = null;
        try
        {
            in = new Scanner( file );
            while( in.hasNext() )
            {
                String line = in.nextLine();
                if( line.contains( "" ) )
                {

                }
            }
        }