首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pythonfor循环来更新数据帧

Pythonfor循环来更新数据帧
EN

Stack Overflow用户
提问于 2018-10-06 17:44:10
回答 2查看 61关注 0票数 0

我正在尝试重新创建一个使用Python的VBA宏。有谁能告诉我我应该用的是哪种表达方式,以便得到低于预期的结果?非常感谢。

档案1:

代码语言:javascript
复制
Product Colour  Price
Book    NaN 5
Table   NaN 10
Chair   NaN 7

档案2:

代码语言:javascript
复制
Colour 
Blue 
Red 
Green

循环后的预期结果(文件1):

代码语言:javascript
复制
Product Colour Price    
Book    Blue    5
Table   Blue    10
Chair   Blue    7
Book    Red 5
Table   Red 10
Chair   Red 7
Book    Green   5
Table   Green   10
Chair   Green   7
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-06 18:23:19

首先根据df1的长度复制df2值,然后将list comprehesionchain用于Colour,如下所示:

代码语言:javascript
复制
from itertools import chain


df = pd.DataFrame({'Product': df1['Product'].values.tolist()*len(df2),
                   'Price'  : df1['Price'].values.tolist()*len(df2),
                   'Colour' : list(chain.from_iterable([[v]*len(df1) for v in df2['Colour'].values.tolist()]))})

print(df)
  Product  Price Colour
0    Book      5   Blue
1   Table     10   Blue
2   Chair      7   Blue
3    Book      5    Red
4   Table     10    Red
5   Chair      7    Red
6    Book      5  Green
7   Table     10  Green
8   Chair      7  Green
票数 1
EN

Stack Overflow用户

发布于 2018-10-08 13:19:28

您可以使用列表理解,类似于嵌套的for循环:

代码语言:javascript
复制
df = pd.DataFrame([[product, colour, price] for colour in df2['Colour'] \
                   for product, price in zip(df1['Product'], df1['Price'])],
                  columns=['Product', 'Colour', 'Price'])

print(df)

  Product Colour  Price
0    Book   Blue      5
1   Table   Blue     10
2   Chair   Blue      7
3    Book    Red      5
4   Table    Red     10
5   Chair    Red      7
6    Book  Green      5
7   Table  Green     10
8   Chair  Green      7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52681731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档