pygetdf
Purpose
Synopsis
procedure pygetdf(expr:string,result:list of array)
procedure pygetdf(expr:string,result:list of array,labels:list of string)
Arguments
|
expr
|
Python expression that evaluates to a pandas DataFrame
|
|
result
|
Mosel list of arrays to be initialized from pandas DataFrame
|
|
labels
|
Labels of the pandas DataFrame columns used for initialization
|
Example
In this example, two Mosel arrays with the same index sets are initialized from a DataFrame. With the first call to pygetdf, the arrays are initialized based on the order of the DataFrame columns, with the second they are initialized using column labels.
declarations
I, J: set of integer
Numbers: dynamic array(I, J) of integer
Labels: dynamic array(I, J) of string
end-declarations
pyinitpandas
pyexec(`
import pandas as pd
df = pd.DataFrame(
data=[[11, "eleven"], [23, "twenty-three"], [42, "forty-two"]],
index=pd.MultiIndex.from_tuples([(1, 1), (2, 3), (4, 2)]),
columns=["number", "label"])
print(df)
`)
pygetdf("df", [Numbers, Labels])
writeln("I: ", I, "\nJ: ", J)
writeln("Numbers: ", Numbers, "\nLabels: ", Labels)
reset(Numbers); reset(Labels)
pygetdf("df", [Labels, Numbers], ["label", "number"])
writeln("Numbers: ", Numbers, "\nLabels: ", Labels)
Further information
1. The first version of the procedure initializes the arrays based on the order of the DataFrame columns. The second version uses column labels to select the DataFrame columns that are used for the initialization.
2. At first, the procedure interprets the expression as a global variable name and tries to access the variable by getting it from the attributes of the Python
__main__ module. If this fails, the expression is evaluated by Python and the result is used for the Mosel array initialization. It is a fatal error if the expression evaluation or the type conversion fails.
3. The initialization of the result arrays is additive: new elements are written to the existing arrays without clearing previously existing elements. Use reset to manually clear the arrays before calling this procedure.
4. DataFrame conversion is supported in all module functions that accept lists of arrays. In particular, it is supported by pycall and the I/O
Driver python .
5. Do not concatenate untrusted strings from the end user into the
expr string. See Section
Xpress Insight 5 configuration for more information.
Related topics
Module
python3
© 2001-2022 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation ("FICO"). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.
