我正在尝试遍历列表(y)并通过将每个项目的行附加到数据框来输出。
y=[datetime.datetime(2017, 3, 29), datetime.datetime(2017, 3, 30), datetime.datetime(2017, 3, 31)]
期望的输出:
Index Mean Last
2017-03-29 1.5 .76
2017-03-30 2.3 .4
2017-03-31 1.2 1
这是我目前拥有的代码的第一部分和最后一部分:
import pandas as pd
import datetime
df5=pd.DataFrame(columns=['Mean','Last'],index=index)
for item0 in y:
.........
.........
df=df.rename(columns = {0:'Mean'})
df4=pd.concat([df, df3], axis=1)
print (df4)
df5.append(df4)
print (df5)
我的代码只将一行放入数据框中,而不是y中每个项目的行:
Index Mean Last
2017-03-29 1.5 .76
答案 0 :(得分:2)
尝试:
y = [datetime(2017, 3, 29), datetime(2017, 3, 30),datetime(2017, 3, 31)]
m = [1.5,2.3,1.2]
l = [0.76, .4, 1]
df = pd.DataFrame([],columns=['time','mean','last'])
for y0, m0, l0 in zip(y,m,l):
data = {'time':y0,'mean':m0,'last':l0}
df = df.append(data, ignore_index=True)
如果您希望y
成为index
:
df.index = df.time
答案 1 :(得分:1)
有几种方法可以实现这一点,并且很难知道哪种方法最有意义,而且信息有限。但是一种方法是从仅具有索引的数据帧开始,逐行遍历数据帧并从其他进程填充值。以下是该方法的一个示例:
import datetime
import numpy as np
import pandas as pd
y=[datetime.datetime(2017, 3, 29), datetime.datetime(2017, 3, 30), datetime.datetime(2017, 3, 31)]
main_df = pd.DataFrame(y, columns=['Index'])
#pop in the additional columns you want, but leave them blank
main_df['Mean'] = None
main_df['Last'] = None
#set the index
main_df.set_index(['Index'], inplace=True)
给出了以下内容:
Mean Last
Index
2017-03-29 None None
2017-03-30 None None
2017-03-31 None None
现在让我们循环并插入一些组成的随机值:
## loop through main_df and add values
for (index, row) in main_df.iterrows():
main_df.ix[index].Mean = np.random.rand()
main_df.ix[index].Last = np.random.rand()
这导致以下数据框中填充了None
值:
Mean Last
Index
2017-03-29 0.174714 0.718738
2017-03-30 0.983188 0.648549
2017-03-31 0.07809 0.47031