将列转换为类别并合并数据(熊猫,数据框)

时间:2019-12-15 14:06:25

标签: python pandas dataframe

我有一个包含单个股票数据的大数据框。 样本:

import pandas as pd 


# initialize list of lists 
data = [["01.01.2019"  , 10, 15, 14 ],["02.01.2019" , 11, 15, 18]] 

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ["Date", 'AAPL', 'MMM', "GS"]) 

# print dataframe. 
df 

###Date AAPL    MMM GS
0   01.01.2019  10  15  14
1   02.01.2019  11  15  18


现在,我想相应地转换此数据,因此得到以下输出。 应该附加数据值,以及日期变量,并且前几列标题应合并显示在“名称”一列中作为字符串。


# initialize list of lists 
data = [["01.01.2019" , 'AAPL', 10],["02.01.2019" , 'AAPL', 11],  ["01.01.2019", 'MMM', 15], ["02.01.2019", 'MMM', 15],  ["01.01.2019", 'GS', 14], ["02.01.2019", 'GS', 18]] 

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ["Date", 'Name', 'Data']) 

# print dataframe. 
df 


###    Date Name    Data
0   01.01.2019  AAPL    10
1   02.01.2019  AAPL    11
2   01.01.2019  MMM     15
3   02.01.2019  MMM     15
4   01.01.2019  GS      14
5   02.01.2019  GS      18


这个小样本对我有用的是我无法在整个数据框中使用的东西,因为它太大了。同样,此解决方案也只考虑两家公司。


df_new = df[["Date", "AAPL"]].append(df[["Date", "MMM"]])
df_new["Data"] = df_new.max(axis=1)
df_new["Name"] =  "AAPL"
df_new= df_new.reset_index()
df_new.loc[2:3,'Name'] = "MMM"

df_new.drop(df_new.columns[[0, 1, 3]], axis=1, inplace=True)

df_new

### Date    Data    Name
0   01.01.2019  10.0    AAPL
1   02.01.2019  11.0    AAPL
2   01.01.2019  15.0    MMM
3   02.01.2019  15.0    MMM


我相信这里有解决方案,但是我找不到一个好的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要的是melt的{​​{1}}功能

pandas