我有一个DataFrame,是这样的,我在下面的代码中创建了下面的df。
我有三个excel文件(名称:- 1C1,1M1,1V1),现在我想通过DataFrame列'Source'来分割组,并将数据保存在新的'Sheet2'中,而不删除'Sheet1'中的现有数据。
import glob
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd
df=pd.DataFrame()
for f in glob.glob(r'...\Excel\1*.xlsx'):
info=pd.read_excel(f)
df=df.append(info)
for filename in glob.glob(r'...\Excel\1*.xlsx'):
print(filename)
book=load_workbook(filename)
writer=pd.ExcelWriter(filename,engine='openpyxl')
writer.book=book
df.to_excel(writer,sheet_name='Sheet2')
writer.save()
writer.close()
当你使用pandas groupby
你会得到一个结果组的集合。 所以,我会。
groupby
方法来制作你的组。我把这个问题单独写了一篇文章,以展示如何从一个单独的组中剥离出 groupby
操作。 你可以把它作为一个框架来使用。
In [28]: df = pd.DataFrame({'filename': ['a', 'a', 'a', 'b', 'b'],
...: 'value': [2.5, 3, 4.0, 1.1, 2.2]}
...: )
In [29]: df
Out[29]:
filename value
0 a 2.5
1 a 3.0
2 a 4.0
3 b 1.1
4 b 2.2
In [30]: groups = df.groupby(['filename'])
In [31]: for f_name, group in groups:
...: print(f'name of group: {f_name}')
...: print(group['value'])
...: print(max(group['value']))
...: print()
...:
...:
name of group: a
0 2.5
1 3.0
2 4.0
Name: value, dtype: float64
4.0
name of group: b
3 1.1
4 2.2
Name: value, dtype: float64
2.2
谢谢,我知道Groupby是如何工作的,但我很困惑在哪里和如何在我的上述代码中添加groupby功能,使它不会覆盖现有的数据,并与新的sheet(sheet2)存储在各自的文件中。