Import CSV to pandas with two delimiters
<p>I have a CSV with two delimiters (<code>;</code>) and (<code>,</code>) it looks like this:</p>

<pre><code>vin;vorgangid;eventkm;D_8_lamsoni_w_time;D_8_lamsoni_w_value
V345578;295234545;13;-1000.0,-980.0;7.9921875,11.984375
V346670;329781064;13;-960.0,-940.0;7.9921875,11.984375
</code></pre>

<p>I want to import it into a pandas data frame, with the (<code>;</code>) acting as a column separator and (<code>,</code>) as a separator for a <code>list</code> or <code>array</code> using <code>float</code> as data type. So far I am using this method, but I am sure there is something easier out there.</p>

<pre><code>aa=0;
csv_import=pd.read_csv(folder+FileName, ';')
for col in csv_import.columns:
aa=aa+1
if type(csv_import[col][0])== str and aa&gt;3:
    # string to list of strings
    csv_import[col]=csv_import[col].apply(lambda x:x.split(','))
    # make the list of stings into a list of floats
    csv_import[col]=csv_import[col].apply(lambda x: [float(y) for y in x])
</code></pre>

<p>Asides from the other fine answers here, which are more pandas-specific, it should be noted that Python itself is pretty powerful when it comes to string processing. You can just place the result of replacing <code>';'</code> with <code>','</code> in a <a href="https://docs.python.org/2/library/stringio.html" rel="nofollow"><code>StringIO</code></a> object, and work normally from there:</p>

<pre><code>In [8]: import pandas as pd

In [9]: from cStringIO import StringIO

In [10]: pd.read_csv(StringIO(''.join(l.replace(';', ',') for l in open('stuff.csv'))))
Out[10]: 
                   vin  vorgangid  eventkm  D_8_lamsoni_w_time  \
V345578 295234545   13    -1000.0   -980.0            7.992188   
V346670 329781064   13     -960.0   -940.0            7.992188   

                   D_8_lamsoni_w_value  
V345578 295234545            11.984375  
V346670 329781064            11.984375  
</code></pre>

python csv pandas delimiter csv-import