给定一个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