我想将数据框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将被修改,每次将新值写入新行)。我目前正在努力使功能正确。
请帮忙!
由于
答案 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对象做同样的事情。不一定必须是字符串。