Assignment
To work through various use cases, we'll use a simple DTable called temperatures_dt. This dataset has max and min temperature for 5 cities for the whole year. It's a hypothetical dataset.
>> import dtables
>>
>> temperatures_dt = dtables.load_tuples([
>> ('city', 'max_temp', 'min_temp'),
>> ('San Francisco', 105, 25),
>> ('San Diego', 125, 40),
>> ('Los Angeles', 115, 35),
>> ('Santa Barbara', 112, 33),
>> ('San Jose', 110, 30)
>> ])
>>
>> temperatures_dt
+---------------+----------+----------+
| city | max_temp | min_temp |
+---------------+----------+----------+
| San Francisco | 105 | 25 |
| San Diego | 125 | 40 |
| Los Angeles | 115 | 35 |
| Santa Barbara | 112 | 33 |
| San Jose | 110 | 30 |
+---------------+----------+----------+
Assigning to Columnar Slices
Case 1: Overwrite an existing column
>> temperature_dt.columns['max_temp'] = [115, 135, 125, 122, 120]
>>
>> temperature_dt
+---------------+----------+----------+
| city | max_temp | min_temp |
+---------------+----------+----------+
| San Francisco | 115 | 25 |
| San Diego | 135 | 40 |
| Los Angeles | 125 | 35 |
| Santa Barbara | 122 | 33 |
| San Jose | 120 | 30 |
+---------------+----------+----------+
Case 2: Add a new column
>> temperature_dt.columns['max_humidity'] = [90, 98, 95, 88, 85]
>>
>> temperature_dt
+---------------+----------+----------+--------------+
| city | max_temp | min_temp | max_humidity |
+---------------+----------+----------+--------------+
| San Francisco | 115 | 25 | 90 |
| San Diego | 135 | 40 | 98 |
| Los Angeles | 125 | 35 | 95 |
| Santa Barbara | 122 | 33 | 88 |
| San Jose | 120 | 30 | 85 |
+---------------+----------+----------+--------------+
Case 3: Perform multiple columnar operations together:
>> temperature_dt.columns[ ['min_temp', 'min_humidity'] ] = [
>> [35, 50, 45, 43, 40],
>> [75, 80, 73, 75, 77]
>> ]
>>
>> temperature_dt
+---------------+----------+----------+--------------+--------------+
| city | max_temp | min_temp | max_humidity | min_humidity |
+---------------+----------+----------+--------------+--------------+
| San Francisco | 115 | 35 | 90 | 75 |
| San Diego | 135 | 50 | 98 | 80 |
| Los Angeles | 125 | 45 | 95 | 73 |
| Santa Barbara | 122 | 43 | 88 | 75 |
| San Jose | 120 | 40 | 85 | 77 |
+---------------+----------+----------+--------------+--------------+
Assigning to Row Slice
Case 1: Change the values for one row:
>> temperature_dt.rows[0] = ('San Francisco', 105, 25, 80, 65)
>>
>> temperature_dt
+---------------+----------+----------+--------------+--------------+
| city | max_temp | min_temp | max_humidity | min_humidity |
+---------------+----------+----------+--------------+--------------+
| San Francisco | 105 | 25 | 80 | 65 |
| San Diego | 135 | 50 | 98 | 80 |
| Los Angeles | 125 | 45 | 95 | 73 |
| Santa Barbara | 122 | 43 | 88 | 75 |
| San Jose | 120 | 40 | 85 | 77 |
+---------------+----------+----------+--------------+--------------+
Case 2: Change the values for multiple rows:
>> temperature_dt.rows[1:3] = [
>> ('San Diego', 135, 50, 98, 80),
>> ('Los Angeles', 125, 45, 95, 73),
>> ('Santa Barbara', 122, 43, 88, 75),
>> ]
>>
>> temperature_dt
+---------------+----------+----------+--------------+--------------+
| city | max_temp | min_temp | max_humidity | min_humidity |
+---------------+----------+----------+--------------+--------------+
| San Francisco | 105 | 25 | 80 | 65 |
| San Diego | 135 | 50 | 98 | 80 |
| Los Angeles | 125 | 45 | 95 | 73 |
| Santa Barbara | 122 | 43 | 88 | 75 |
| San Jose | 120 | 40 | 85 | 77 |
+---------------+----------+----------+--------------+--------------+
Mixing Column & Row Slices
>> temperature_dt.rows[0].columns['max_temp'] = 125
>> temperature_dt
+---------------+----------+----------+--------------+--------------+
| city | max_temp | min_temp | max_humidity | min_humidity |
+---------------+----------+----------+--------------+--------------+
| San Francisco | 125 | 25 | 80 | 65 |
| San Diego | 135 | 50 | 98 | 80 |
| Los Angeles | 125 | 45 | 95 | 73 |
| Santa Barbara | 122 | 43 | 88 | 75 |
| San Jose | 120 | 40 | 85 | 77 |
+---------------+----------+----------+--------------+--------------+
Slices are Views; Not Copies
DTable slices are views and not copies. Any modifications made to observations within a slice would also be reflected in the base DTable.