pandas - 拆分和连接数据框
问题描述
所以我有一个看起来像这样的数据框:
>>>df = pd.DataFrame({
'id': [i for i in range(5)],
'1': ['a', 'b', 'c', 'd', 'e'],
'2': ['f', 'g', 'h', 'i', 'g']
})
>>>df
id 1 2
0 0 a f
1 1 b g
2 2 c h
3 3 d i
4 4 e g
我想将此数据框转换为以下数据框
>>>df_concatenated
id val
1 0 a
1 1 b
1 2 c
1 3 d
1 4 e
2 0 f
2 1 g
2 2 h
2 3 i
2 4 g
解决方案
一种方法是 pd.melt
pd.melt(df, id_vars=['id'], value_vars=['1','2']).set_index('variable',append=True)
另一种是通过.loc
访问器拆分和连接。长但有效
res1=df.iloc[:,[0,2]]
res1.columns=['id','val']
res=df.iloc[:,:2]
res.columns=['id','val']
res2=pd.concat([res1,res])
res2
variable id value
0 1 0 a
1 1 1 b
2 1 2 c
3 1 3 d
4 1 4 e
5 2 0 f
6 2 1 g
7 2 2 h
8 2 3 i
9 2 4 g
推荐阅读
- python - 在python中检查JSON请求是否与以前的请求不同(数据已更新)
- .htaccess - 无重定向的 URL 重写
- python - RLlib 改变观察的形状,将 [None] 添加到形状元组
- excel - 最后一行不同的工作表和复制粘贴
- swift - TLS CA 证书 SSL Pinning 使用 SWIFT-NIO-SSL
- c# - UdpClient 仅在同一台机器上的一个实例中接收 dgram
- java - java - 如何根据Java中从小到大的数字对有序列表进行排序?
- awk - 使用 awk 删除重复的空行
- apache - 两个站点的 Apache 虚拟主机无法正常工作
- hyperledger-fabric - 有没有办法在超级账本结构中获取用户私钥和公钥以进行数据加密