【问题标题】:how to append two or more dataframes in pandas and do some analysis如何在 pandas 中附加两个或多个数据框并进行一些分析
【发布时间】:2018-08-10 13:08:00
【问题描述】:

我有 3 个 df:

df1=pd.DataFrame({"Name":["one","two","three"],"value":[4,5,6]})
df2=pd.DataFrame({"Name":["four","one","three"],"value":[8,6,2]})
df3=pd.DataFrame({"Name":["one","four","six"],"value":[1,1,1]})

我可以一一追加,但我想一次追加所有三个数据帧并进行一些分析。

我正在尝试计算名称包含多少数据帧除以总数据帧name present in dataframes/total dataframes

我想要的输出是,

 Name  value   Count
 one    11      1
 two    5       0.333
 three  8       0.666
 four   9       0.666
 six    1       0.333

请帮忙,提前谢谢!

【问题讨论】:

  • 上半场试试这个,df=pd.concat([df1,df2,df3]) df.groupby(["Name"])["value"].sum().reset_index( )

标签: python pandas dataframe data-analysis


【解决方案1】:

用途:


dfs = [df1, df2, df3]
df = pd.concat(dfs)

df1 = df.groupby('Name')['value'].agg([('value', 'sum'), ('Count', 'size')]).reset_index()
df1['Count'] /= len(dfs) 

类似的解决方案:

df1 = (pd.concat(dfs)
         .groupby('Name')['value']
         .agg([('value', 'sum'), ('Count', 'size')])
         .assign(Count = lambda x: x.Count /len(dfs))
         .reset_index())

print (df1)
    Name  value     Count
0   four      9  0.666667
1    one     11  1.000000
2    six      1  0.333333
3  three      8  0.666667
4    two      5  0.333333

【讨论】:

  • @pyd - 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2022-12-11
  • 2016-07-18
  • 2013-09-18
相关资源
最近更新 更多