通过使用列名和按行名分组一个数据帧

时间:2019-09-05 05:21:21

标签: python-3.x pandas dataframe dictionary automation

我当前拥有一个DataFrame(df1),并且当前尝试将df1拆分为3个小DataFrame,并以原始df1列的名称(col_1df,col_2df,col_3df)命名,并且df1中的第一列应成为new的列名dfs如下所示

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试如下使用Pivot Table

样本数据(CSV)

a,date,v1,v2 
a1,2019-01-01,1,2
a1,2019-01-02,1,3
a2,2019-01-01,2,3
a3,2019-01-01,1,3

使用pandas.read_csv()函数将此CSV加载到熊猫数据框中。 然后只需按以下所示应用pivot_table:

df.pivot_table(index='date', columns='a', values='v1')
a            a1   a2   a3
date                     
2019-01-01  1.0  2.0  1.0
2019-01-02  1.0  NaN  NaN

因此,您可以为其他列做

注意:始终以易于访问的方式发布样本数据,图像不是最佳实践。

编辑:

如果您想要对所有目标列执行自动操作的方式,那么最好的考虑就是创建字典,其中键是您的数据框名称,值是相应的数据框本身。

这里是:

d=dict()
target_cols=list(set(df.columns)-{'date','a'})
for col in target_cols:
    d[col+"_df"]=df.pivot_table(index='date', columns='a', values=col)

访问键之一:

print(d['v1_df'])
a            a1   a2   a3
date                     
2019-01-01  1.0  2.0  1.0
2019-01-02  1.0  NaN  NaN