Class: Rover::DataFrame

Inherits:
Object
  • Object
show all
Defined in:
lib/to_csv.rb

Instance Method Summary collapse

Instance Method Details

#categorize(col) ⇒ Object



126
127
128
129
130
131
132
# File 'lib/to_csv.rb', line 126

def categorize(col)
	if col.is_a?(Array)
		self[col].to_a.uniq
	else
		self[[col]].to_a.uniq
	end
end

#get_category(categ) ⇒ Object



134
135
136
137
138
# File 'lib/to_csv.rb', line 134

def get_category(categ)
	a = self[categ.each_key.to_a].to_a
	mask = a.filter_map.with_index {|v, i|  i if v == categ }
	return self[mask] 
end

#left_join_rev(other, on:) ⇒ Object

Roverのleft_joinをエラー回避



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/to_csv.rb', line 141

def left_join_rev(other, on:)
	left_rows = self.to_a
	right_rows = other.to_a
	
	right_map = right_rows.each_with_object({}) do |row, map|
		map[row[on]] = row
	end
	
	result_rows = []
	
	left_rows.each do |l_row|
		key = l_row[on]
		r_row = right_map[key]
		
		if r_row
			result_rows << l_row.merge(r_row)
		else
			result_rows << l_row
		end
	end
		
	Rover::DataFrame.new(result_rows)
end

#map(&block) ⇒ Object



122
123
124
# File 'lib/to_csv.rb', line 122

def map(&block)
	self.to_a.map(&block)
end

#outer_join(other, **kwargs) ⇒ Object



115
116
117
118
119
120
# File 'lib/to_csv.rb', line 115

def outer_join(other, **kwargs)
	ddr = self.to_daru
	odr = self.to_daru
	j = ddr.join(how: :outer, **kwargs)  ## 外部結合 
	return j.to_rover
end

#simple_pivot(index, vectors) ⇒ Object



109
110
111
112
113
# File 'lib/to_csv.rb', line 109

def simple_pivot(index, vectors, ...)
	ddr = self.to_daru
	piv = ddr.simple_pivot(index, vectors, ...)
	return piv.to_rover
end

#to_daruObject



105
106
107
# File 'lib/to_csv.rb', line 105

def to_daru
	Daru::DataFrame.new(self.to_a)
end

#write_csv(path, encoding: nil) ⇒ Object

Rover#to_csv is already exist.



100
101
102
103
# File 'lib/to_csv.rb', line 100

def write_csv(path, encoding: nil)
	enc = encoding.nil? ? "" : ":#{encoding}"
	open(path, "w#{enc}") {|f| f.write self.to_csv}
end