Python 从数据帧中的一行获取某些列值,并将它们添加到另一个数据帧中
我想将某些列值从数据帧Python 从数据帧中的一行获取某些列值,并将它们添加到另一个数据帧中,python,python-2.7,pandas,dataframe,Python,Python 2.7,Pandas,Dataframe,我想将某些列值从数据帧df中的特定行复制到另一个名为bestdf 在这里,我创建了一个空数据帧(称为bestdf): .我在df中找到了某一行,并在上次将该行分配给变量: last_time = df.iloc[-1] print last_time 给我 DATETIME PRC 2016-10-03 00:07:39.295000 335.82 然后我想从DATETIME列中获取2016-10-03,并将其放入我的另一个数据帧(bestdf)
df
中的特定行复制到另一个名为bestdf
在这里,我创建了一个空数据帧(称为bestdf
):
.我在df
中找到了某一行,并在上次将该行分配给变量:
last_time = df.iloc[-1]
print last_time
给我
DATETIME PRC
2016-10-03 00:07:39.295000 335.82
然后我想从DATETIME
列中获取2016-10-03
,并将其放入我的另一个数据帧(bestdf
)的DATE
列中。
我还想获取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
但这似乎不起作用。仅供参考,我还想将其放入一个循环中(在循环中,将修改最后一次,每次新值都将写入新行)。我正在尝试正确的功能
请帮忙
谢谢有多种方法可以完成您想做的事情:
此外,您还可以将问题分解为多个部分。这样,您将能够应用不同的步骤来解决这些问题
以下是一个例子:
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
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
DATE PRICE1 PRICE2
0 2016-10-03 335.29 None
1 2016-10-03 33.90 None
代码继续:
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
bestdf['DATE'] = bestdf['DATE'].apply(lambda value: value.split(' ')[0])
# we change column format based on how we need it to be
bestdf
输出:
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
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
DATE PRICE1 PRICE2
0 2016-10-03 335.29 None
1 2016-10-03 33.90 None
代码继续:
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
bestdf['DATE'] = bestdf['DATE'].apply(lambda value: value.split(' ')[0])
# we change column format based on how we need it to be
bestdf
输出:
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
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
DATE PRICE1 PRICE2
0 2016-10-03 335.29 None
1 2016-10-03 33.90 None
我们也可以对datetime对象执行同样的操作。不必是字符串。您能创建一个最小的示例并显示所需的输出吗?!你想从另一个数据框的某些行和列创建新的数据框吗?@VikashSingh这就是我想做的是(我编辑了上面的内容,使其更具信息性)。@Cleb请查看上面的编辑,thanks@nrs90如果您可以共享您的源数据帧结构,这将非常有帮助。谢谢