sal_mod = sal[['Salary']]
f=lambda x : x.replace('K','000')
sal_mod = sal_mod.apply(f,axis=1)
sal_mod.head(20)
enter image description here
I run this code in the hope that I will be able remove the k from every row of the column, But Now I am sweating over it. Please help. IDK what is going wrong.
Maybe this helps - when I use :
f=lambda x: x.lower()
in the code above :
this is the error that pops up :
Series' object has no attribute 'lower'
the data :
Salary
0 ₹752K - ₹828K
1 ₹423K - ₹462K
2 ₹622K - ₹671K
3 ₹28K - ₹30K
4 ₹23K - ₹25K
5 ₹395K - ₹2,069K
6 ₹950K - ₹3,086K
7 ₹695K - ₹741K
8 ₹583K - ₹639K
9 ₹57K - ₹62K
Based on a few comments I was able to clean the data to some extent:
sal_mod = sal[['Salary']]
f=lambda x : x.str.replace('K','000').str.replace('₹','').str.replace(',','')
sal_mod = sal_mod.apply(f,axis=1)
sal_mod = pd.Series(sal_mod['Salary'],dtype="string")
sal_mod.head(20)
The following code dosent execute :
sal_min = sal_mod.apply((lambda x: x.split('-')),axis=1)
sal_min.head(20)
Can I change the data type to string, because I hit a snag after a few successful str.replace(..) I want to use split function but the result of the split function is not scriptable/iterable. it is probably because it is a text object as of now! I want to be able to convert it to integer
Related
I'm trying to export a postgresql database into a .gpkg file, but some of my fields are lists, and ogr2ogr send me the message :
Warning 1: The output driver does not natively support StringList type for field my_field_name. Misconversion can happen. -mapFieldType can be used to control field type conversion.
But, as in the documentation, -mapFieldType is not a -lco, i don't find how to use it with the python version of gdal.VectorTranslate
here ma config :
gdal_conn = gdal.OpenEx(f"PG:service={my_pgsql_service}", gdal.OF_VECTOR)
gdal.VectorTranslate("path_to_my_file.gpkg"), gdal_conn,
SQLStatement=my_sql_query,
layerName=my_mayer_name,
format="GPKG",
accessMode='append',
)
so i've tried to add it in the -lco :
layerCreationOptions=["-mapFieldType StringList=String"]
but it didn't work
so i diged into the code of gdal, added a field mapFieldType=None into the VectorTranslateOptions function, and added into its code the following lines :
if mapFieldType is not None:
mapField_str = ''
i = 0
for k, v in mapFieldType.items():
i += 1
mapField_str += f"{k}={v}" if i == len(mapFieldType) else f"{k}={v},"
new_options += ['-mapFieldType', mapField_str]
And it worked, but is there an other way ?
And if not, where can i propose this feature ?
Thank you for your help
because I cant find any way to test my Pine Script strategy on multiple symbols, I created a way to loop through my whole Script.
In This I made 10 variables for 10 different Symbols like this:
ersteTicker = "AAPL"
zweiteTicker = "MSFT"
dritterTicker = "..."
Than I loopedfrom 1 to 10 and made 10 If-querys, which give me in every loop the right symbol like this:
a = 1
for i = 0 to 10
if a == 1
tickerID = ersteTicker
if a == 2
tickerID = .....
Now I thougt everything should be all right, but now the console gives back an error message called:
line 75: Can't call 'security' inside: 'if', 'for'
Does anybody know how to bypass this problem??
best regards
Christian
P.S.: I already tested a small other script and in this script the console doesn't give me back this error message, even if I also made a for loop with a security function in it..
(looks like this)
//#version=3
strategy("Meine Strategie", overlay=true)
tickerID = "ADS"
vergleichstimeframe = "D"
TaesRSLPeriode = 200
a = 1
myEma() => ema(close, TaesRSLPeriode)
for i = 0 to 10
if ( a == 1)
Daily_ema = security(tickerID, vergleichstimeframe, myEma())
//plot(Daily_ema*TagesRSLGrenzwert)
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
Here's an example of global security. The security must not be inside of neither for nor if statements. If you need more symbols - use more securities. But bear in mind, that you can't choose a symbol from a set of symbols and call security with that symbol (because it'll be mutable variable and you cannot use them with security):
//#version=3
strategy("Meine Strategie", overlay=true)
tickerID = "ADS"
vergleichstimeframe = "D"
TaesRSLPeriode = 200
a = 1
myEma() => ema(close, TaesRSLPeriode)
// this always must stay global
Daily_ema = security(tickerID, vergleichstimeframe, myEma())
// here you could put more secureties:
//Daily_ema1 = security(tickerID1, vergleichstimeframe, myEma())
//Daily_ema2 = security(tickerID2, vergleichstimeframe, myEma())
//Daily_ema3 = security(tickerID3, vergleichstimeframe, myEma())
// ...
for i = 0 to 10
if a == 1
if Daily_ema > Daily_ema[i] // actual using of the security's result
strategy.entry("My Long Entry Id", strategy.long)
In general and according to previous comments, the strategy tester isn’t accurate. Just view an indication for the operation. Maybe the only benefit of the testing strategy is to determine the value of (SL, TP). Meanwhile the strategy depends on trusted intermittent periods, you can increase the SL 10 to avoid the temporary reflections
I am having a strange problem with iText and acrofields. I created a PDF and added the acrofields. Now when I do form.setField ('a field name', "a value") and I display or print the PDF, the value gets duplicated (once in smaller font and once in the intended font for that document). I checked the structure of the document and it doesn't look that my Acrofield are duplicated. What could be the cause of this
Thanks in advance
Pascal
Please find link here: https://drive.google.com/file/d/0B8O5n5QFSSNrSGVlNllOcEJHRzQ/edit?usp=sharing
I am on Ubuntu. Maybe that's why! I am using evince to look at the file, however I get the same result when I print it. I included a screenshot of what I see. https://drive.google.com/file/d/0B8O5n5QFSSNrWXJyY2VpSkt5NE0/edit?usp=sharing
When I say duplicated, I should say shadowed. The value of the field is first displayed without font styling then overwritten with the required font.
The code I showed is pretty straightforward. The 2 arrrays are the name of the fields and their associated values. If the value is xxxx I set the field value to its index in that array. As you can see on the screenshot it gets shadowed too. My printout looks exactly like the screenshot. I haven't tried it yet on another platform.
Here is the code written in groovy
File mergeForm (String path, Map fields, Map values, String newFile) {
println "Merge Form: $path"
def file = grailsApplication.mainContext.getResource(path)?.inputStream
if (file == null)
return null
def reader = new PdfReader(file)
def stamper = new PdfStamper(reader, new FileOutputStream(newFile))
def form = stamper.getAcroFields()
fields.eachWithIndex { k, v, i ->
def val = ""
if (v instanceof Closure) {
val = v(values)
}
else if (v == '_xxxx_') {
val = "${i + 1}"
}
else if (values[v]) {
val = values."$v"
}
println "setting value[$i]: ${val} to: $k"
form.setField (k, val)
}
stamper.close()
return new File (newFile)
}
Summing it up
The issue seems to be due to multiple field annotations in the PDF at hand for the each field which differ somewhat, though, and therefore have different appearances.
In detail
Looking at the document version BOE-267-L1-Rev-1.unlocked-with-fields.pdf we will inspect the topmost field on the first page, "This Claim is Filed for Fiscal Year 20". We see that the page object 9 in its annotations array (in object 265) has (among many others) object 304 and object 180 which both are annotations of that field!
304 0 obj
<<
/Ff 12582912
/MaxLen 2
/F 4
/Type/Annot
/Subtype/Widget
/T(This Claim is Filed for Fiscal Year 20)
/P 9 0 R
/Q 1
/MK<<>>
/FT/Tx
/Rect[166.765 693.57 188.965 701.479]
/DA(/Arial 8 Tf 0 g)
/AA<</F 333 0 R/K 334 0 R>>
>>
endobj
...
180 0 obj
<<
/Ff 0
/F 4
/Type/Annot
/Subtype/Widget
/DR<</Font<</Helv 2 0 R>>>>
/T(This Claim is Filed for Fiscal Year 20)
/V()
/AP<</N 179 0 R>>
/P 9 0 R
/BS<</W 0.5/S/S>>
/FT/Tx
/Rect[165.4 706.28 187.6 714.19]
/DA(/Helv 0 Tf 0 g )
>>
endobj
The definitions of these describe slightly different positions on the page:
/Rect[166.765 693.57 188.965 701.479]
...
/Rect[165.4 706.28 187.6 714.19]
and different default appearance strings
/DA(/Arial 8 Tf 0 g)
...
/DA(/Helv 0 Tf 0 g )
Thus, it is not a surprise that you get multiple, non-identical appearances of this field. The actual surprise is that the version filled by iText on Adobe Reader does not display double values.
#Bruno someone might want to look into this as soon as there is some time.
The other fields have duplicate appearances, too; most often the page positions are nearly identical, though, but the default appearance streams still differ which results in multiple, non-identical appearances for them, too.
We are trying to read the pixels from an uploaded Bitmap image, yet the line
aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue) always gives an error saying "Unknown property: "red" in undefined".
Our current script is:
aBitmap = selectBitMap caption:"Select a Bitmap"
Print(aBitmap.height)
Print(aBitmap.width)
aLength = aBitmap.height
aWidth = aBitmap.width
for i = 0 to (aLength - 10) by 10 do
(
for j = 0 to (aWidth - 10) by 10 do
(
Print(i)
Print(j)
aPixel = getPixels aBitmap [i,j] 1
aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)
aBox = box pos:[i,j,0] width:0.1 length:0.1 height:aBrightness
)
)
We would really appreciate any help regarding this script.
You have your coordinates wrong. The X value goes first.
It should be
APixels = Getpixels aBitmap [j, i] 1
You can check to see if aPixel is undefined before using it.
aPixel = getPixels aBitmap [i,j] 1
if (aPixel == undefined) do ( format "ERROR!!! [%,%]\n" i, j to:listener; continue )
aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)
This might help you figure where the bug is. Often a function will return 'undefined' to a variable so you need to check if it is undefined. In this case, once you fix the bug, you can remove this type of code since you will have eliminated undefined behavior. Notice I used "format" instead of "print", this is much nicer to use for just a tiny extra code.
I see two suspicious things to check.
1) Most indexing in maxscript starts with 1 not 0. Check the documentation.
2) As Rotem pointed out, [x,y], not [y,x]
How do I get an outline view in sublime text editor for Windows?
The minimap is helpful but I miss a traditional outline (a klickable list of all the functions in my code in the order they appear for quick navigation and orientation)
Maybe there is a plugin, addon or similar? It would also be nice if you can shortly name which steps are neccesary to make it work.
There is a duplicate of this question on the sublime text forums.
Hit CTRL+R, or CMD+R for Mac, for the function list. This works in Sublime Text 1.3 or above.
A plugin named Outline is available in package control, try it!
https://packagecontrol.io/packages/Outline
Note: it does not work in multi rows/columns mode.
For multiple rows/columns work use this fork:
https://github.com/vlad-wonderkidstudio/SublimeOutline
I use the fold all action. It will minimize everything to the declaration, I can see all the methods/functions, and then expand the one I'm interested in.
I briefly look at SublimeText 3 api and view.find_by_selector(selector) seems to be able to return a list of regions.
So I guess that a plugin that would display the outline/structure of your file is possible.
A plugin that would display something like this:
Note: the function name display plugin could be used as an inspiration to extract the class/methods names or ClassHierarchy to extract the outline structure
If you want to be able to printout or save the outline the ctr / command + r is not very useful.
One can do a simple find all on the following grep ^[^\n]*function[^{]+{ or some variant of it to suit the language and situation you are working in.
Once you do the find all you can copy and paste the result to a new document and depending on the number of functions should not take long to tidy up.
The answer is far from perfect, particularly for cases when the comments have the word function (or it's equivalent) in them, but I do think it's a helpful answer.
With a very quick edit this is the result I got on what I'm working on now.
PathMaker.prototype.start = PathMaker.prototype.initiate = function(point){};
PathMaker.prototype.path = function(thePath){};
PathMaker.prototype.add = function(point){};
PathMaker.prototype.addPath = function(path){};
PathMaker.prototype.go = function(distance, angle){};
PathMaker.prototype.goE = function(distance, angle){};
PathMaker.prototype.turn = function(angle, distance){};
PathMaker.prototype.continue = function(distance, a){};
PathMaker.prototype.curve = function(angle, radiusX, radiusY){};
PathMaker.prototype.up = PathMaker.prototype.north = function(distance){};
PathMaker.prototype.down = PathMaker.prototype.south = function(distance){};
PathMaker.prototype.east = function(distance){};
PathMaker.prototype.west = function(distance){};
PathMaker.prototype.getAngle = function(point){};
PathMaker.prototype.toBezierPoints = function(PathMakerPoints, toSource){};
PathMaker.prototype.extremities = function(points){};
PathMaker.prototype.bounds = function(path){};
PathMaker.prototype.tangent = function(t, points){};
PathMaker.prototype.roundErrors = function(n, acurracy){};
PathMaker.prototype.bezierTangent = function(path, t){};
PathMaker.prototype.splitBezier = function(points, t){};
PathMaker.prototype.arc = function(start, end){};
PathMaker.prototype.getKappa = function(angle, start){};
PathMaker.prototype.circle = function(radius, start, end, x, y, reverse){};
PathMaker.prototype.ellipse = function(radiusX, radiusY, start, end, x, y , reverse/*, anchorPoint, reverse*/ ){};
PathMaker.prototype.rotateArc = function(path /*array*/ , angle){};
PathMaker.prototype.rotatePoint = function(point, origin, r){};
PathMaker.prototype.roundErrors = function(n, acurracy){};
PathMaker.prototype.rotate = function(path /*object or array*/ , R){};
PathMaker.prototype.moveTo = function(path /*object or array*/ , x, y){};
PathMaker.prototype.scale = function(path, x, y /* number X scale i.e. 1.2 for 120% */ ){};
PathMaker.prototype.reverse = function(path){};
PathMaker.prototype.pathItemPath = function(pathItem, toSource){};
PathMaker.prototype.merge = function(path){};
PathMaker.prototype.draw = function(item, properties){};