Python 如何使用Pandas将多列合并为一个指示符?
我有数据集:Python 如何使用Pandas将多列合并为一个指示符?,python,pandas,Python,Pandas,我有数据集: Class 2000 2001 2002 2003 A 1 2 3 4 B 5 5 4 4 C 2 1 5 6 我想得到这样的结果: Class Year Value A 2000 1 A 2001 2 A 2002 3 A 2003 4 B 2000 5 B 2001 5 B 2002 4 B 2003 4 C 20
Class 2000 2001 2002 2003
A 1 2 3 4
B 5 5 4 4
C 2 1 5 6
我想得到这样的结果:
Class Year Value
A 2000 1
A 2001 2
A 2002 3
A 2003 4
B 2000 5
B 2001 5
B 2002 4
B 2003 4
C 2000 2
C 2001 1
C 2002 5
C 2003 6
请帮帮我 您正在寻找取消数据帧的轴心,在Pandas中,他们称之为“Pandas.melt” 例如:
pandas.melt(df, id_vars=['Class'], value_vars=['2000','2001','2002','2003'])
您希望取消数据帧的轴心,在Pandas中,他们称之为“Pandas.melt” 例如:
pandas.melt(df, id_vars=['Class'], value_vars=['2000','2001','2002','2003'])
你可以和我一起使用
由于执行sort\u values()
操作会使索引变得混乱,因此您需要先对索引进行排序,然后再对列进行排序
import pandas as pd
from io import StringIO
d = '''Class 2000 2001 2002 2003
A 1 2 3 4
B 5 5 4 4
C 2 1 5 6'''
df = pd.read_csv(StringIO(d), sep='\s+')
df2 = pd.melt(df, id_vars=['Class'], value_vars=['2000','2001','2002','2003']).sort_values(by=['Class'])
df2 = df2.reset_index(drop=True)
df2 = df2.rename(columns={'variable':'Year'})
print(df2)
# output
Class Year value
0 A 2000 1
1 A 2001 2
2 A 2002 3
3 A 2003 4
4 B 2000 5
5 B 2001 5
6 B 2002 4
7 B 2003 4
8 C 2000 2
9 C 2001 1
10 C 2002 5
11 C 2003 6
联机检查链接:您可以与一起使用
由于执行sort\u values()
操作会使索引变得混乱,因此您需要先对索引进行排序,然后再对列进行排序
import pandas as pd
from io import StringIO
d = '''Class 2000 2001 2002 2003
A 1 2 3 4
B 5 5 4 4
C 2 1 5 6'''
df = pd.read_csv(StringIO(d), sep='\s+')
df2 = pd.melt(df, id_vars=['Class'], value_vars=['2000','2001','2002','2003']).sort_values(by=['Class'])
df2 = df2.reset_index(drop=True)
df2 = df2.rename(columns={'variable':'Year'})
print(df2)
# output
Class Year value
0 A 2000 1
1 A 2001 2
2 A 2002 3
3 A 2003 4
4 B 2000 5
5 B 2001 5
6 B 2002 4
7 B 2003 4
8 C 2000 2
9 C 2001 1
10 C 2002 5
11 C 2003 6
在线检查链接:我在一个带有pandas功能的方法链中创建了它
df = df.set_index('Class').unstack().reset_index().rename(columns={'level_0':'Year', 0:'Value'}).sort_values(['Class','Year']).reset_index(drop=True)
df
Year Class Value
0 2000 A 1
1 2001 A 2
2 2002 A 3
3 2003 A 4
4 2000 B 5
5 2001 B 5
6 2002 B 4
7 2003 B 4
8 2000 C 2
9 2001 C 1
10 2002 C 5
11 2003 C 6
我在一个带有pandas特性的方法链中创建了它
df = df.set_index('Class').unstack().reset_index().rename(columns={'level_0':'Year', 0:'Value'}).sort_values(['Class','Year']).reset_index(drop=True)
df
Year Class Value
0 2000 A 1
1 2001 A 2
2 2002 A 3
3 2003 A 4
4 2000 B 5
5 2001 B 5
6 2002 B 4
7 2003 B 4
8 2000 C 2
9 2001 C 1
10 2002 C 5
11 2003 C 6
欢迎收看StackOverflow!您应该知道,StackOverflow不是由其他人为您编写代码,而是根据您已经完成的工作获得帮助。如果你有一些你写的代码,你可以编辑你的文章来添加它。这将是非常有帮助的人在这里帮助你。欢迎在StackOverflow!您应该知道,StackOverflow不是由其他人为您编写代码,而是根据您已经完成的工作获得帮助。如果你有一些你写的代码,你可以编辑你的文章来添加它。这里的人帮助你会很有帮助的。