通过查看第一列来堆叠一对列
Stacking a pair of columns by looking at the first column
我很难从 Excel 转移到 Python,因为我已经习惯了让所有内容都可见。下面,我试图将顶部的 table 转换为下面的 table。想使用 pandas 数据帧,但如果有更好的不同解决方案,我很想听听。
此外,作为额外的奖励,如果有人可以向我指出一些对视觉 excel 转换为 Python 的资源,那就太棒了!
*注意,实际上有大约 350 行,我们可以达到 ID12 和代码 12。此外,状态可以在我的原始数据源中重复,就像 VA 在这里所做的那样。
State ID Code ID2 Code2 ID3 Code3
VA RIC 733 FFX 787 NULL NULL
NC WIL 798 GSB 698 WSS 444
VA NPN 757 NULL NULL NULL NULL
要求输出:
State ID Code
VA RIC 733
VA FFX 787
VA NPN 757
NC WIL 798
NC GSB 698
NC WSS 444
我认为 lreshape
最适合这种情况。
pd.lreshape(df, {'Code': ['Code', 'Code2', 'Code3'], 'ID': ['ID', 'ID2', 'ID3']}) \
.sort_values('State', ascending=False)
State Code ID
0 VA 733.0 RIC
2 VA 757.0 NPN
3 VA 787.0 FFX
1 NC 798.0 WIL
4 NC 698.0 GSB
5 NC 444.0 WSS
除@MaxU 之外的更通用的解决方案是:
code_list = [col for col in list(df) if col.startswith('Code')]
id_list = [col for col in list(df) if col.startswith('ID')]
pd.lreshape(df, {'Code': code_list, 'ID': id_list}).sort_values('State', ascending=False)
我很难从 Excel 转移到 Python,因为我已经习惯了让所有内容都可见。下面,我试图将顶部的 table 转换为下面的 table。想使用 pandas 数据帧,但如果有更好的不同解决方案,我很想听听。
此外,作为额外的奖励,如果有人可以向我指出一些对视觉 excel 转换为 Python 的资源,那就太棒了!
*注意,实际上有大约 350 行,我们可以达到 ID12 和代码 12。此外,状态可以在我的原始数据源中重复,就像 VA 在这里所做的那样。
State ID Code ID2 Code2 ID3 Code3
VA RIC 733 FFX 787 NULL NULL
NC WIL 798 GSB 698 WSS 444
VA NPN 757 NULL NULL NULL NULL
要求输出:
State ID Code
VA RIC 733
VA FFX 787
VA NPN 757
NC WIL 798
NC GSB 698
NC WSS 444
我认为 lreshape
最适合这种情况。
pd.lreshape(df, {'Code': ['Code', 'Code2', 'Code3'], 'ID': ['ID', 'ID2', 'ID3']}) \
.sort_values('State', ascending=False)
State Code ID
0 VA 733.0 RIC
2 VA 757.0 NPN
3 VA 787.0 FFX
1 NC 798.0 WIL
4 NC 698.0 GSB
5 NC 444.0 WSS
除@MaxU 之外的更通用的解决方案是:
code_list = [col for col in list(df) if col.startswith('Code')]
id_list = [col for col in list(df) if col.startswith('ID')]
pd.lreshape(df, {'Code': code_list, 'ID': id_list}).sort_values('State', ascending=False)