我有这样的数据框:
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
原来,我有数百万个属性,数百万+行。因此,通用公式将起作用。感谢。
答案 0 :(得分:0)
您可以将参数prefix
和prefix_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( "" ) )
{
}
}
}