Python For循环更新数据帧

Python For循环更新数据帧,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,我正在尝试使用Python重新创建一个VBA宏。有人能告诉我,为了得到下面的结果,我应该使用什么样的语句吗?多谢各位 文件1: Product Colour Price Book NaN 5 Table NaN 10 Chair NaN 7 文件2: Colour Blue Red Green 循环后的预期结果(文件1): Product Colour Price Book Blue 5 Table Blue 10 Chair Blue

我正在尝试使用Python重新创建一个VBA宏。有人能告诉我,为了得到下面的结果,我应该使用什么样的语句吗?多谢各位

文件1:

Product Colour  Price
Book    NaN 5
Table   NaN 10
Chair   NaN 7
文件2:

Colour 
Blue 
Red 
Green
循环后的预期结果(文件1):

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

首先按
df2
的长度复制
df1
的值,然后使用
列表压缩
颜色
,如下所示:

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

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

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

请你提供一份清单。图像没有帮助!。我已经更新了问题。我希望你现在能看到这个例子。是的,我用的是熊猫。谢谢你的帮助。但是,在尝试使用您建议的代码时,我遇到了一些错误:当尝试从文件中读取数据时,它不起作用。你能帮我查一下吗?x=pd.read\u excel('C:/Desktop/file1.xlsx')df1=pd.DataFrame(数据=x)df1 y=pd.read\u excel('C:/Desktop/file2.xlsx')df2=pd.DataFrame(数据=y)df2 df2 df=pd.DataFrame([[Product,color,Price]用于df2['color']颜色,用于产品,价格在邮政编码中(df1['Product'],df1['Price']),列=['Product','color']))谢谢你的帮助Sandeep!