<p>嗯,我得到了答案,但它不只是一个命令或任何魔法功能。我就是这样得到答案的。您可以进一步优化此代码。希望这有帮助!你知道吗</p>
<pre><code>import pandas as pd
from datetime import timedelta
df = pd.read_csv('myfile.csv')
df[u'date'] = pd.to_datetime(df[u'date'])
p1 = df[[u'date', u'p01']].copy()
p2 = df[[u'date', u'p02']].copy()
p3 = df[[u'date', u'p03']].copy()
p4 = df[[u'date', u'p04']].copy()
p5 = df[[u'date', u'p05']].copy()
# renaming cols -p1,p2,p3,p4
p1.columns = ['date','val']
p2.columns = ['date','val']
p3.columns = ['date','val']
p4.columns = ['date','val']
p5.columns = ['date','val']
p1['col'] = 'p01'
p2['col'] = 'p02'
p3['col'] = 'p03'
p4['col'] = 'p04'
p5['col'] = 'p05'
main = pd.concat([p1,p2,p3,p4,p5])
main['days2add'] = main['col'].apply(lambda x: int(x.strip('p')) -1 )
ff = lambda row : row[u'date'] + timedelta(row[u'days2add'])
main['new_date'] = main.apply(ff, axis=1)
In [209]: main[['new_date', u'val']]
Out[209]:
new_date val
0 1941-01-01 33.6
0 1941-01-02 7.1
0 1941-01-03 22.3
0 1941-01-04 0.0
0 1941-01-05 0.0
</code></pre>
<p>我的csv文件内容:</p>
<pre><code>In [210]: df
Out[210]:
date p01 p02 p03 p04 p05 p06
0 1941-01-01 33.6 7.1 22.3 0 0 0
</code></pre>
<p>我的输出内容:</p>
<pre><code>In [209]: main[['new_date', u'val']]
Out[209]:
new_date val
0 1941-01-01 33.6
0 1941-01-02 7.1
0 1941-01-03 22.3
0 1941-01-04 0.0
0 1941-01-05 0.0
</code></pre>