<p>我试图复制一个数据帧,我想应该和发布的一样:</p>
<pre><code>import pandas as pd
raw_data = {'HotelName': ['Hotel1', 'Hotel2'],
'RoomType': ['Standard,Standard,Standard,Deluxe,Deluxe', 'Standard,Standard,Deluxe,Deluxe,Grande'],
'RoomFloor': ['10F,20F', '30F,40F,50F'],
'RoomPrice': ['100,105,108,200,205', '90,95,250,240,300']}
data = pd.DataFrame(raw_data)
</code></pre>
<p>我想模块“orderedset”可能会有所帮助,希望下面的代码可以解决您的问题:</p>
<pre><code>from ordered_set import OrderedSet # revise 'orderedset' to 'ordered_set'
cols_ordered = ['HotelName', 'RoomType', 'RoomFloor', 'RoomPrice']
data = data[cols_ordered]
data = data[['HotelName', 'RoomType', 'RoomFloor', 'RoomPrice']].applymap(lambda x: x.split(','))
dummies = data.applymap(lambda x: len(x)).apply(max, 1)
for i in range(len(data)):
room_type, room_floor = data[['RoomType', 'RoomFloor']].iloc[i]
type_floor_dict = dict(zip(OrderedSet(room_type), room_floor))
data['RoomFloor'].iloc[i] = [type_floor_dict[t] for t in room_type]
data['HotelName'].iloc[i] *= dummies[i]
new_data = [pd.DataFrame(data.loc[i].tolist(), index=cols_ordered).T for i in data.index]
new_data = pd.concat(new_data, ignore_index=True)
print(new_data)
</code></pre>