replace() method not working on Pandas DataFrame
You need to assign back
df = df.replace('white', np.nan)
or pass param inplace=True
:
In [50]:
d = {'color' : pd.Series(['white', 'blue', 'orange']),
'second_color': pd.Series(['white', 'black', 'blue']),
'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace('white', np.nan, inplace=True)
df
Out[50]:
color second_color value
0 NaN NaN 1.0
1 blue black 2.0
2 orange blue 3.0
Most pandas ops return a copy and most have param inplace
which is usually defaulted to False
JavaScript: Difference between .forEach() and .map()
They are not one and the same. Let me explain the difference.
forEach
: This iterates over a list and applies some operation with side effects to each list member (example: saving every list item to the database) and does not return anything.
map
: This iterates over a list, transforms each member of that list, and returns another list of the same size with the transformed members (example: transforming list of strings to uppercase). It does not mutate the array on which it is called (although the callback function may do so).
References
Array.prototype.forEach() - JavaScript | MDN
Array.prototype.map() - JavaScript | MDN
How to replace HashMap Values while iterating over them in Java
Using Java 8:
map.replaceAll((k, v) -> v - 20);
Using Java 7 or older:
You can iterate over the entries and update the values as follows:
for (Map.Entry<Key, Long> entry : playerCooldowns.entrySet()) {
entry.setValue(entry.getValue() - 20);
}
How to update a value, given a key in a hashmap?
map.put(key, map.get(key) + 1);
should be fine. It will update the value for the existing mapping. Note that this uses auto-boxing. With the help of map.get(key)
we get the value of corresponding key, then you can update with your requirement. Here I am updating to increment value by 1.
What's the difference between map() and flatMap() methods in Java 8?
Both map
and flatMap
can be applied to a Stream<T>
and they both return a Stream<R>
. The difference is that the map
operation produces one output value for each input value, whereas the flatMap
operation produces an arbitrary number (zero or more) values for each input value.
This is reflected in the arguments to each operation.
The map
operation takes a Function
, which is called for each value in the input stream and produces one result value, which is sent to the output stream.
The flatMap
operation takes a function that conceptually wants to consume one value and produce an arbitrary number of values. However, in Java, it's cumbersome for a method to return an arbitrary number of values, since methods can return only zero or one value. One could imagine an API where the mapper function for flatMap
takes a value and returns an array or a List
of values, which are then sent to the output. Given that this is the streams library, a particularly apt way to represent an arbitrary number of return values is for the mapper function itself to return a stream! The values from the stream returned by the mapper are drained from the stream and are passed to the output stream. The "clumps" of values returned by each call to the mapper function are not distinguished at all in the output stream, thus the output is said to have been "flattened."
Typical use is for the mapper function of flatMap
to return Stream.empty()
if it wants to send zero values, or something like Stream.of(a, b, c)
if it wants to return several values. But of course any stream can be returned.
How to convert List to Map?
List<Item> list;
Map<Key,Item> map = new HashMap<Key,Item>();
for (Item i : list) map.put(i.getKey(),i);
Assuming of course that each Item has a getKey()
method that returns a key of the proper type.
What is the difference between putIfAbsent and computeIfAbsent in Java 8 Map ?
Difference #1
computeIfAbsent
takes a mapping function, that is called to obtain the value if the key is missing.
putIfAbsent
takes the value directly.
If the value is expensive to obtain, then putIfAbsent
wastes that if the key already exists.
A common "expensive" value is e.g. new ArrayList<>()
for when you're creating a Map<K, List<V>>
, where creating a new list when the key already exists (which then discards the new list) generates unnecessary garbage.
Difference #2
computeIfAbsent
returns "the current (existing or computed) value associated with the specified key, or null if the computed value is null".
putIfAbsent
returns "the previous value associated with the specified key, or null if there was no mapping for the key".
So, if the key already exists, they return the same thing, but if the key is missing, computeIfAbsent
returns the computed value, while putIfAbsent
return null.
Difference #3
Both method define "absent" as key missing or existing value is null, but:
computeIfAbsent
will not put a null value if the key is absent.
putIfAbsent
will put the value if the key is absent, even if the value is null.
It makes no difference for future calls to computeIfAbsent
, putIfAbsent
, and get
calls, but it does make a difference to calls like getOrDefault
and containsKey
.
Related Topics
Is There a More Concise Way to Call an Outside Method on a Map in Ruby
Validate That String Contains Only Allowed Characters in Ruby
Detect Similar Sounding Words in Ruby
How to Pass Content to Jekyll Default Converter After Custom Conversion
Unable to Delete File from Amazon S3 Using Ruby Script
Using Ruby and Mechanize to Fill in a Remote Login Form Mystery
Algorithm to Print All Valid Combations of N Pairs of Parenthesis
Multipart Response in Ruby/Rack
How to Run an Excel MACro from Ruby
Nokogiri Issues with Ruby on Rails
Building a Simple Search Form in Rails
Can't Setup Ruby Environment - Installing Fii Gem Error
When to Use Keyword Arguments Aka Named Parameters in Ruby