我有两个数据帧:
fuels = pd.DataFrame({'Fuel_Type':['Gasoline', 'Diesel', 'E85']})
years = pd.DataFrame()
years['Year_Model'] = range(2012, 2041)
我所期望的输出是一个新的数据框,它将这两个数据框组合为两列,但对于“年”中的每个值,请对“燃料”中的每个独特燃料类型重复该输出
换句话说,每个不同的年份应重复三次,每种类型的燃料应重复一次
我可以很简单地在R中通过以下方式实现:
df <- merge(
data.frame(years = c(2012:2040)),
data.frame(fuels = c("Gasoline", "Diesel", "E85")),
allow.cartesian = T)
我看过类似问题的答案,例如:
Create all possible combinations of multiple columns in a Pandas DataFrame
Performant cartesian product (CROSS JOIN) with pandas
但是,要么我似乎无法将答案的代码应用于我自己的数据,要么答案太复杂,我无法理解(因为我对Python非常陌生)
有没有一种好的、易于理解的方法
您发布的第二个链接有一个很好的解决方案,但它还有很多其他内容,因此如果您是python新手,可能很难提取。你想要:
这是一种光滑的单轮,因为我们正在同时做一些事情。我们实质上是在每个数据帧中添加一列0,加入其中,然后去掉该列。以下是将其分解为以下步骤:
merge
方法默认为内部联接,因此我们不需要指定,因为这很好。我们只需要告诉它在右边的列中加入on = 'key'
。.drop('key', 1)
中的1告诉它删除列调用的键(1轴),如果我们没有指定(.drop('key')
),或者给它一个0(.drop('key', 0)
),它将尝试删除行调用的键下面的答案应该对您有所帮助:
输出:
相关问题 更多 >
编程相关推荐