繁体   English   中英

将 Pandas DataFrame 中的连续列转换为相应的行

[英]Convert consecutive columns to respective rows in Pandas DataFrame

尝试将连续的列转换为熊猫中的行。 例如:连续的列名是序列号以及一些字符串,即ValN中的Key1 , Val1 ,...., KeyN , DataFrame 您可以使用以下代码生成数据框。

df = pd.DataFrame({'City': ['Houston', 'Austin', 'Hoover'],'State': ['Texas', 'Texas', 'Alabama'],'Name':['Aria', 'Penelope', 'Niko'],'Key1':["test1", "test2", "test3"],'Val1':[28, 4, 7],'Key2':["test4", "test5", "test6"],
'Val2':[82, 45, 76],'Key3':["test7", "test8", "test9"],'Val3':[4, 76, 9],'Key4':["test10", "test11", "test12"],'Val4':[97, 66, 10],'Key5':["test13", "test14", "test15"],'Val5':[4, 10, '']},columns=['City', 'State', 'Name', 'Key1', 'Val1', 'Key2', 'Val2', 'Key3', 'Val3', 'Key4', 'Val4', 'Key5', 'Val5'])

在此处输入图片说明

我尝试如下melt功能:

df.melt(id_vars=['City', 'State'], var_name='Column', value_name='Key')

但我得到了以下输出:

在此处输入图片说明

问题是对于每个键,val 列都有不同的行。 预期输出如下:

在此处输入图片说明

使用pd.wide_to_long

pd.wide_to_long(df,['Key', 'Val'],['City', 'State', 'Name'],'No').reset_index()

输出:

       City    State      Name  No     Key Val
0   Houston    Texas      Aria   1   test1  28
1   Houston    Texas      Aria   2   test4  82
2   Houston    Texas      Aria   3   test7   4
3   Houston    Texas      Aria   4  test10  97
4   Houston    Texas      Aria   5  test13   4
5    Austin    Texas  Penelope   1   test2   4
6    Austin    Texas  Penelope   2   test5  45
7    Austin    Texas  Penelope   3   test8  76
8    Austin    Texas  Penelope   4  test11  66
9    Austin    Texas  Penelope   5  test14  10
10   Hoover  Alabama      Niko   1   test3   7
11   Hoover  Alabama      Niko   2   test6  76
12   Hoover  Alabama      Niko   3   test9   9
13   Hoover  Alabama      Niko   4  test12  10
14   Hoover  Alabama      Niko   5  test15    

您正在尝试同时熔化两列。 pd.wide_to_long 处理这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM