我在Pandas中有一个数据名,它有一组带连字符的列(有几个,但我将使用2作为示例,_1和_2),这两个列都描述了不同的年份。
df = pd.DataFrame({'A': ['BP','Virgin'],
'B(LY)': ['A','C'],
'B(LY_1)': ['B', 'D'],
'C': [1, 3],
'C_1': [2,4],
'D': ['W','Y'],
'D_1': ['X','Z']})
我正在尝试重新组织表以透视它,使它看起来像这样:
df = pd.DataFrame({'A': ['BP','BP', 'Virgin', 'Virgin'],
'Year': ['A','B','C','D'],
'C': [1,2,3,4],
'D': ['W','X','Y','Z']})
但是我不知道怎么做。问题是,我只需要连字符列来匹配其他变量的等价连字符。任何帮助都是感激的,谢谢
- 编辑**
下面是一个真实的数据示例
df = pd.DataFrame({'Company': ['BP','Virgin'],
'Account_date(LY)': ['A','E'],
'Account_date(LY_1)': ['B', 'F'],
'Account_date(LY_2)': ['C', 'G'],
'Account_date(LY_3)': ['D', 'H'],
'Acc_months': [1, 5],
'Acc_months_1': [2,6],
'Acc_months_2': [3,7],
'Acc_months_2': [4,8],
'D': ['W','A'],
'D_1': ['X','B'],
'D_1': ['Y','C'],
'D_1': ['Z','D']})
期望输出:
df = pd.DataFrame({'Company': ['BP','BP','BP','BP', 'Virgin', 'Virgin','Virgin', 'Virgin'],
'Year': ['A','B','C','D','E','F','G','H'],
'C': [1,2,3,4,5,6,7,8],
'D': ['W','X','Y','Z','A','B','C','D']})
1条答案
按热度按时间pu82cl6c1#
您可以使用:
或者使用看门人的
pivot_longer
:输出:
更新示例
使用Map器来匹配
(LY)
-〉_1
等。输出: