pandas 如何将多个列合并为一个不带列名的列

hkmswyz6  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(136)

我有一个包含多个列的panda数据框,我想使用melt函数将所有列合并为一个列来创建一个新的数据框,但我不希望原始数据框中的列名成为新数据框的一部分。
下面是示例 Dataframe 和代码。有没有办法使它更简洁?

date                   Col1      Col2       Col3      Col4           
1990-01-02 12:00:00     24        24        24.8      24.8           
1990-01-02 01:00:00     59        58        60        60.3   
1990-01-02 02:00:00     43.7      43.9      48        49

所需输出:

Rates
0   24
1   59
2   43.7
3   24
4   58
5   43.9
6   24.8
7   60
8   48
9   24.8
10  60.3
11  49

代码:

df = df.melt(var_name='ColumnNames', value_name='Rates')  #using melt function to flatten columns
df_main.drop(['ColumnNames'], axis = 1, inplace = True)   # dropping 'ColumnNames'
thigvfpy

thigvfpy1#

根据需要设置value_namevalue_vars参数:

In [137]: pd.melt(df, value_name='Price', value_vars=df.columns[1:]).drop('variable', axis=1)
Out[137]: 
    Price
0    24.0
1    59.0
2    43.7
3    24.0
4    58.0
5    43.9
6    24.8
7    60.0
8    48.0
9    24.8
10   60.3
11   49.0
wztqucjr

wztqucjr2#

也可以使用**stack()transpose():**

dfx = df.T.stack().reset_index(drop=True) #date must be index.

输出

0
0   24.0
1   59.0
2   43.7
3   24.0
4   58.0
5   43.9
6   24.8
7   60.0
8   48.0
9   24.8
10  60.3
11  49.0

相关问题