擅长:python、mysql、java
<p>考虑使用一般的<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_table.html" rel="nofollow">^{<cd1>}</a>函数(其中<code>read_csv()</code>是一种特殊类型),pandas可以轻松地导入指定空格分隔符<code>sep='\s+'</code>的特定.dat文件。此外,逐列计算不需要定义带<code>apply()</code>的函数。</p>
<p>下面的numpy用于条件除以零。此外,示例.dat文件的第一列是<em>#time</em>,第2、3、4列是<em>x-momentum</em>,<em>y-momentum</em>和<em>mass</em>(代码中的表达式不同,但需要修改)。</p>
<pre><code>import pandas as pd
import numpy as np
columns_to_keep = ['#time', 'x-momentum', 'y-momentum', 'mass']
df = pd.read_table("flash.dat", sep="\s+", usecols=columns_to_keep)
df['mass_per_time'] = np.where(df['#time'] > 0, df['mass']/df['#time'], np.nan)
df['x-momentum_per_time'] = np.where(df['#time'] > 0, df['x-momentum']/df['#time'], np.nan)
df['y-momentum_per_time'] = np.where(df['#time'] > 0, df['y-momentum']/df['#time'], np.nan)
</code></pre>