Python PANDAS数据帧concat和pivot数据
我正在学习python并使用一些示例数据。我有一个数据集的CSV文件,该数据集按美国人口的百分位数按季度列出净值。 我已经成功地将数据按百分位数进行了子集划分,创建了三个按年度划分的净值散点图,三个人口部分各有一个散点图。但是,我试图将这三个图合并到一个数据帧中,这样我就可以将这些线合并到一个图中 数据如下: 迄今为止的守则:Python PANDAS数据帧concat和pivot数据,python,pandas,dataframe,Python,Pandas,Dataframe,我正在学习python并使用一些示例数据。我有一个数据集的CSV文件,该数据集按美国人口的百分位数按季度列出净值。 我已经成功地将数据按百分位数进行了子集划分,创建了三个按年度划分的净值散点图,三个人口部分各有一个散点图。但是,我试图将这三个图合并到一个数据帧中,这样我就可以将这些线合并到一个图中 数据如下: 迄今为止的守则: import pandas as pd import matplotlib.pyplot as plt # importing numpy as np impor
import pandas as pd
import matplotlib.pyplot as plt
# importing numpy as np
import numpy as np
df = pd.read_csv("dfa-income-levels.csv")
df99th = df.loc[df['Category']=="pct99to100"]
df99th.plot(x='Date',y='Net worth', title='Net worth by percentile')
dfmid = df.loc[df['Category']=="pct40to60"]
dfmid.plot(x='Date',y='Net worth')
dflow = df.loc[df['Category']=="pct00to20"]
dflow.plot(x='Date',y='Net worth')
data = dflow['Net worth'], dfmid['Net worth'], df99th['Net worth']
headers = ['low', 'mid', '99th']
newdf = pd.concat(data, axis=1, keys=headers)
这会产生如下所示的数据框,这不是我想要用来绘制数据的
low mid 99th
0 NaN NaN 3514469.0
3 NaN 2503918.0 NaN
5 585550.0 NaN NaN
6 NaN NaN 3602196.0
9 NaN 2518238.0 NaN
... ... ... ...
747 NaN 8610343.0 NaN
749 3486198.0 NaN NaN
750 NaN NaN 32011671.0
753 NaN 8952933.0 NaN
755 3540306.0 NaN NaN
有没有其他方法的建议?在您共享的csv文件中,我没有看到代码中提到的类别。为了沿着列合并数据帧,可以使用
pd.concat
沿着axis=1
。它包含相同索引号的列。因此,首先将Date
列设置为索引,然后将它们合并,然后再次将Date
作为数据框列返回
- 要将
列设置为数据帧的索引,Date
和df1=df1.设置索引('Date')
df2=df2.设置索引('Date')
- 使用
或df_merge=pd.Concat([df1,df2],axis=1)
df_merge=pd.merge(df1,df2,on='Date')对数据帧
和df1
df2
- 通过
df\u merge=df\u merge.reset\u index()
我已编辑了您的链接,以包含income-levels.csv。等待批准
#filter you dataframe to only the categories you're interested in
filtered_df = df[df['Category'].isin(['pct99to100', 'pct00to20', 'pct40to60'])]
filtered_df = filtered_df[['Date', 'Category', 'Net worth']]
fig, ax = plt.subplots() #ax is an axis object allowing multiple plots per axis
filtered_df.groupby('Category').plot(ax=ax)