1

I have a csv file looking like this:

COL0;COl1;COL2;COL3;...;COL9999
SomeText0;[-3.45,0.23];[-1.40,0.21];[-1.35,0.13];...;[-1.87,0.12]
SomeText1;[-3.05,0.20];[-0.40,0.01];[-0.05,0.03];...;[-1.65,0.33]
SomeText2;[-0.40,0.03];[-1.00,0.20];[-0.35,0.03];...;[-1.43,0.12]
...

All cells are strings (e.g. "[-3.45,0.23]" ), but I want them to be np.float64-1d arrays (except COL0 of course)

How do I do this efficiently?

1 Answer 1

1

Just read the CSV normally and then use the built-in function ast.literal_eval to parse the strings into arrays of floats:

import ast
df = pd.read_csv('YOUR FILE.csv', sep=';')
df.loc[:, 'COl1':] = df.loc[:, 'COl1':].apply(lambda col: col.apply(ast.literal_eval).apply(np.asarray))

Output:

>>> df
        COL0           COl1          COL2           COL3        COL9999
0  SomeText0  [-3.45, 0.23]  [-1.4, 0.21]  [-1.35, 0.13]  [-1.87, 0.12]
1  SomeText1   [-3.05, 0.2]  [-0.4, 0.01]  [-0.05, 0.03]  [-1.65, 0.33]
2  SomeText2   [-0.4, 0.03]   [-1.0, 0.2]  [-0.35, 0.03]  [-1.43, 0.12]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.