如何在pandas中追加两个数据框并将其打印到excel文件中?

问题描述 投票:0回答:1

我想在我的excel文件tb.xlsx中工作,并通过名为 "混合类型 "的列对数据进行分组,然后将新的数据框存储到另一个excel文件中。

import numpy as np
import pandas as pd
df=pd.read_excel("D:\\tb.xlsx")
group=df.groupby("Hybrid type")
print(group)
df1=pd.DataFrame(columns=df.columns)
for Hybridtype,frame in group:
    df2=pd.DataFrame(frame)
    df1.append(df2,ignore_index=True)
print(df1)
df1.to_excel("Montu.xlsx",sheet_name="Sheet1")

当我运行这个文件时,它给出了输出。

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000272FD41B108>
Empty DataFrame
Columns: [Electricity generation price per unit, Primary load demand, Hybrid type, Biomass type, Location, Country, System Type, Ref.]
Index: []

我想append()命令在这里不能正常工作,因为我的df1数据库是空的。有人能帮我解决我的代码吗?

python-3.x pandas append pandas-groupby
1个回答
0
投票

在这里,你可以开始了。与原生的python相比,DataFrame.append()不是一个原地函数。很容易忘记;)

import numpy as np
import pandas as pd
df=pd.read_excel("D:\\tb.xlsx")
group=df.groupby("Hybrid type")
print(group)
df1=pd.DataFrame(columns=df.columns)
for Hybridtype,frame in group:
    df2=pd.DataFrame(frame)
    df1 = df1.append(df2,ignore_index=True)
print(df1)
df1.to_excel("Montu.xlsx",sheet_name="Sheet1")

-1
投票

几天前,我也遇到了类似的问题。由于我不知道你的xlsx的内容是什么,我用了一个示例文件来重现这个问题。

问题是这样的。

import numpy as np
import pandas as pd
df=pd.read_excel("/home/aakash/Downloads/file_example_XLS_100.xls")
group=df.groupby("Country")
print(group)
df1=pd.DataFrame(columns=df.columns)
for Hybridtype,frame in group:
    df2=pd.DataFrame(frame)
    df1.append(df2,ignore_index=True)
print(df1)

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7fe9b48eba90>
Empty DataFrame
Columns: [0, First Name, Last Name, Gender, Country, Age, Date, Id]
Index: []

解决方案:根据官方文档,"Dataframe.append "函数将其他行追加到调用者的末尾,返回一个新的对象,所以修改后的代码应该是。

import numpy as np
import pandas as pd
df=pd.read_excel("/home/aakash/Downloads/file_example_XLS_100.xls")
group=df.groupby("Country")
print(group)
df1=pd.DataFrame(columns=df.columns)
for Hybridtype,frame in group:
    df2=pd.DataFrame(frame)
    df1=df1.append(df2,ignore_index=True) ## Modified code
print(df1)

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7fe9b4380f60>
      0 First Name   Last Name  Gender        Country Age        Date    Id
0     3     Philip        Gent    Male         France  36  21/05/2015  2587
1    12   Franklyn      Unknow    Male         France  38  15/10/2017  2579
2    16   Shavonne         Pia  Female         France  24  21/05/2015  1546
3    17     Shavon      Benito  Female         France  39  15/10/2017  3579
© www.soinside.com 2019 - 2024. All rights reserved.