从Pandas Dataframe中的一行获取某些列值并将它们添加到另一个数据帧中

时间:2017-02-20 18:02:39

标签: python python-2.7 pandas dataframe

我想将数据框df中特定行的某些列值复制到另一个名为bestdf的数据框

这里我创建一个空数据框(称为bestdf):

new_columns = ['DATE', 'PRICE1', 'PRICE2']
bestdf = pd.DataFrame(columns = new_columns)
bestdf.set_index(['DATE'])

。我找到df之外的某一行,并将该行分配给变量last_time

last_time = df.iloc[-1]
print last_time

给了我

                  DATETIME     PRC
2016-10-03 00:07:39.295000  335.82

然后我想从2016-10-03列中取DATETIME并将其放入我的其他数据框DATE列中bestdf列。 我还想将PRC放入空数据框的PRICE1列。我希望bestdf看起来像这样:

                      DATE  PRICE1  PRICE2
                2016-10-03  335.82

这是我到目前为止所得到的?

sample_date = str(last_time).split()
best_price = sample_date[2]
sample_date = sample_date[0]

bestdf['DATE'] = sample_date
bestdf['PRICE1'] = best_price

这似乎不起作用。仅供参考我还想把它放到一个循环中(其中last_time将被修改,每次将新值写入新行)。我目前正在努力使功能正确。

请帮忙!

由于

1 个答案:

答案 0 :(得分:1)

有多种方法可以做你想做的事情: 您也可以将问题分解为多个部分。这样,您就可以应用不同的步骤来解决它们。

以下是一个例子:

import pandas as pd
from datetime import datetime

data = [{'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 335.29},
        {'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 33.9},
        {'DATETIME': '2016-10-03 00:07:39.295000', 'PRC': 10.9}]

df = pd.DataFrame.from_dict(data, orient='columns')

df

输出:

    DATETIME                    PRC
0   2016-10-03 00:07:39.295000  335.29
1   2016-10-03 00:07:39.295000  33.90
2   2016-10-03 00:07:39.295000  10.90

代码继续:

bestdf = df[df['PRC'] > 15].copy()
# we filter data from original df and make a copy
bestdf.columns = ['DATE','PRICE1']
# we change columns as we need
bestdf['PRICE2'] = None
bestdf

输出:

    DATE                        PRICE1  PRICE2
0   2016-10-03 00:07:39.295000  335.29  None
1   2016-10-03 00:07:39.295000  33.90   None

代码继续:

bestdf['DATE'] = bestdf['DATE'].apply(lambda value: value.split(' ')[0])
# we change column format based on how we need it to be
bestdf

输出:

    DATE    PRICE1  PRICE2
0   2016-10-03  335.29  None
1   2016-10-03  33.90   None

我们也可以对datetime对象做同样的事情。不一定必须是字符串。