使用for循环附加到dataframe。 Python3

时间:2017-05-01 17:05:54

标签: python-3.x pandas datetime for-loop dataframe

我正在尝试遍历列表(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

2 个答案:

答案 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