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 数据库为空。有人可以帮我写代码吗?

4

2 回答 2

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")
于 2020-05-02T08:46:10.607 回答
-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
于 2020-05-02T08:48:30.993 回答