给定一个pandas数据框:

fruit_prices = [('apple', 5.99),
           ('orange', 4.99),
           ('pear', 6.99)]
labels = ['fruit', 'price']
fruit_prices = pd.DataFrame.from_records(datasets, columns=labels)

fruit_prices
fruit    price
apple    5.99
orange   4.99
apple    6.99

我想添加一个新的列,例如,只包含两个值,但是以这些唯一值出现在原始数据文件中的每个现有行的方式。
day = ['wednesday', 'wednesday', 'thursday']

预期产出:
fruit    price    day
apple    5.99     wednesday
apple    5.99     thursday
orange   4.99     wednesday
orange   4.99     thursday
apple    6.99     wednesday
apple    6.99     thursday

我想在从新列/系列中获取唯一值之后,也许我可以使用itertools:
from itertools import cycle
dates = cycle(['wednesday','thursday'])

但是,我不知道如何将这个返回到DATAFRAME(以允许重复现有行的方式),或者这是一个可行的方法。我还考虑过从该系列创建一个单列数据帧并将其合并,但这似乎很迂回,我也不确定如何进行。

最佳答案

我相信你需要:

day = ['wednesday', 'thursday']

df = fruit_prices.assign(A=1).merge(pd.DataFrame({'day':day,'A':1}), on='A', how='outer')
print (df)
    fruit  price  A        day
0   apple   5.99  1  wednesday
1   apple   5.99  1   thursday
2  orange   4.99  1  wednesday
3  orange   4.99  1   thursday
4    pear   6.99  1  wednesday
5    pear   6.99  1   thursday

09-30 23:56
查看更多