为了账号安全,请及时绑定邮箱和手机立即绑定

根据每个 DataFrame 行的匹配值将列表的值添加到 Pandas DataFrame 列

根据每个 DataFrame 行的匹配值将列表的值添加到 Pandas DataFrame 列

呼唤远方 2021-06-10 14:12:43
我有一个如下所示的 Pandas DataFrame:            02013-09-20  02013-09-21  12013-09-22  22013-09-23  32013-09-24  42013-09-25  52013-09-26  62013-09-27  72013-09-28  82013-09-29  9...以及以下结构中的列表列表:[[0, 125.77, 126.28, 125.77, 126.16], [3, 126.06, 126.31, 125.84, 125.86], [4, 126.04, 126.93, 126.0, 126.93], [5, 126.51, 126.51, 126.0, 126.18], [6, 127.63, 128.04, 127.57, 128.04], [7, 127.58, 127.8, 126.42, 126.94], [10, 126.59, 126.77, 125.14, 125.51], [11, 125.38, 125.88, 125.38, 125.88], [12, 124.3, 124.3, 123.3, 123.81], [13, 123.38, 123.55, 123.09, 123.23], [14, 122.71, 122.85, 122.5, 122.79], [17, 121.19, 121.74, 121.0, 121.74], [18, 122.09, 122.09, 121.12, 121.13], [19, 123.31, 123.88, 123.17, 123.58], [20, 124.57, 125.83, 124.57, 125.83], ...我想将每个列表的最后四个值添加到 DataFrame 中,其中 DataFrame 列“0”的数量等于列表集合中相应列表的第一个值。例如:            0 1      2      3      42013-09-20  0 125.77 126.28 125.77 126.162013-09-21  1 nan2013-09-22  2 nan2013-09-23  3 126.06 126.31 125.84 125.86...
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

将您的列表转换为数据框并使用merge. 在此示例中,我通过变量名称调用了您的列表mylist:


>>> df.merge(pd.DataFrame(mylist), how='left')

   0       1       2       3       4

0  0  125.77  126.28  125.77  126.16

1  1     NaN     NaN     NaN     NaN

2  2     NaN     NaN     NaN     NaN

3  3  126.06  126.31  125.84  125.86

4  4  126.04  126.93  126.00  126.93

5  5  126.51  126.51  126.00  126.18

6  6  127.63  128.04  127.57  128.04

7  7  127.58  127.80  126.42  126.94

8  8     NaN     NaN     NaN     NaN

9  9     NaN     NaN     NaN     NaN

如果您需要指定要合并的列名,请使用 arguments left_on=whatever_column_name, right_on=0。


df.merge(pd.DataFrame(mylist), left_on=0, right_on=0,how='left')

在你的情况下,你原来的列名df是0,所以没有必要。


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号