在 pandas 中将多个列合并为一个列
Concat several columns in a single one in pandas
我在 excel 中有几个包含多列的文件,我想将每个列合并为一个。
有执行代码吗?
df = pd.read_excel('exemple.xlsx', header=0, na_values='NA')
df.head()
joincolumn = pd.concat((df['dia1'] + df['dia1a'] + df['dia1b'] + df['dia1c'] + df['dia1d'] + df['A2'] + df['A2A'] + df['B2'] + df['B2B'] + df['C2'] + df['C2C'] +df['A3'] + df['A3A'] + df['B3'] + df['B3B'] + df['C3'] + df['C3C']))
这应该是这样的:
0.423
0.469
0.428
0.495
0.448
0.51
0.494
0.425
0.489
0.465
没用!
这可以使用ravel
实现
由于没有提供真实数据,为了表述清楚,假设dial
和dia1a
如下:
df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})
然后弄清楚这两列给出:
print(pd.Series(df.values.ravel('F')))
1 2
2 3
3 4
4 A
5 B
6 C
7 D
如果您想保持层次结构,可以使用stack。
df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})
print(df.stack().reset_index())
将输出
level_0 level_1 0
0 0 dia1 1
1 0 dia1a A
2 1 dia1 2
3 1 dia1a B
4 2 dia1 3
5 2 dia1a C
6 3 dia1 4
7 3 dia1a D
我在 excel 中有几个包含多列的文件,我想将每个列合并为一个。 有执行代码吗?
df = pd.read_excel('exemple.xlsx', header=0, na_values='NA')
df.head()
joincolumn = pd.concat((df['dia1'] + df['dia1a'] + df['dia1b'] + df['dia1c'] + df['dia1d'] + df['A2'] + df['A2A'] + df['B2'] + df['B2B'] + df['C2'] + df['C2C'] +df['A3'] + df['A3A'] + df['B3'] + df['B3B'] + df['C3'] + df['C3C']))
这应该是这样的:
0.423
0.469
0.428
0.495
0.448
0.51
0.494
0.425
0.489
0.465
没用!
这可以使用ravel
实现由于没有提供真实数据,为了表述清楚,假设dial
和dia1a
如下:
df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})
然后弄清楚这两列给出:
print(pd.Series(df.values.ravel('F')))
1 2
2 3
3 4
4 A
5 B
6 C
7 D
如果您想保持层次结构,可以使用stack。
df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})
print(df.stack().reset_index())
将输出
level_0 level_1 0
0 0 dia1 1
1 0 dia1a A
2 1 dia1 2
3 1 dia1a B
4 2 dia1 3
5 2 dia1a C
6 3 dia1 4
7 3 dia1a D