我有一个包含一行的数据框:
df_1D = pd.DataFrame({'Day1':[5],
'Day2':[6],
'Day3':[7],
'ID':['AB12'],
'Country':['US'],
'Destination_A':['Miami'],
'Destination_B':['New York'],
'Destination_C':['Chicago'],
'First_Agent':['Jim'],
'Second_Agent':['Ron'],
'Third_Agent':['Cynthia']},
)
Day1 Day2 Day3 ID ... Destination_C First_Agent Second_Agent Third_Agent
0 5 6 7 AB12 ... Chicago Jim Ron Cynthia
我想知道是否有一种简单的方法,将其转换为具有三行的 Dataframe ,如下所示:
Day ID Country Destination Agent
0 5 AB12 US Miami Jim
1 6 AB12 US New York Ron
2 7 AB12 US Chicago Cynthia
5条答案
按热度按时间nnsrf1az1#
您是否尝试过使用.pivot函数透视它?https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pivot.html
iecba09b2#
一个选项使用整形,它只需要知道最后的列:
输出:
单独定义idx/cols的替代方法
0wi1tuuw3#
输出:
无论目的地是什么,您都可以使用它
3htmauhk4#
一个选项是pivot_longger from pyjanitor,在这种情况下,您将一个正则表达式列表传递给
names_pattern
,并将新的列名传递给names_to
:bgtovc5b5#
我不认为有一种方法可以完全自动化地处理这个问题。它需要手动操作。这是我想到的最短的代码。请随意评论:
输出:
希望这能有所帮助。