当列中的值匹配时将数据帧拆分为较小的数据帧并将它们导出到 excel fromat (pandas)
Splitting dataframe in smaller dataframe when value in column match and export them to excel fromat (pandas)
我有一个数据框 A。我需要将它分成具有匹配街道名称的较小数据框。
这是我的数据框:
id
Location_name
Street_Number
Street_name
Object_needed
1
麦当劳
4
奥朗德街
C400/P200
2
奥朗德
175
奥朗德街
Porte socle simple S20
3
体育场
197
波捷街
CCPI S20 6980138
4
国王朱埃
33
波捷街
Coffret CCPI CIBE 单声道
5
加勒比清洁
6
加利斯贝
Coffret CCPI CIBE 单声道
我想要的结果:
数据帧 1:
id
Location_name
Street_Number
Street_name
Object_needed
1
麦当劳
4
奥朗德街
C400/P200
2
奥朗德
175
奥朗德街
Porte socle simple S20
数据框 2:
id
Location_name
Street_Number
Street_name
Object_needed
3
体育场
197
波捷街
CCPI S20 6980138
4
国王朱埃
33
波捷街
Coffret CCPI CIBE 单声道
数据帧 3:
id
Location_name
Street_Number
Street_name
Object_needed
5
加勒比清洁
6
加利斯贝
Coffret CCPI CIBE 单声道
目标是创建与相应街道名称一样多的数据框。
我正在使用 groupby:
grouper = [g[1] for g in df.groupby(['Street_name'])]
有没有办法用 street_name
他们正在上课的名字来命名他们?在我的示例中,第一个不是名称 grouper[0]
,而是 Rue_de_Hollande
。
最后,您知道一次将所有数据帧导出为 excel 格式吗?
如果您希望街道在单独的 excel 个文件中,您可以使用 Pandas ExcelWriter:
streets = set(df.Street_name)
with pd.ExcelWriter('all_streets_excel.xlsx', mode='w') as writer:
for street_name in streets:
street_df = df[df.loc[:, 'Street_name'] == street_name]
street_df.to_excel(writer, street_name)
这可以通过 pandas.query 和 pandas.to_excel 方法通过创建唯一街道名称列表并在 for 循环中迭代来实现:
streets = df["Street_name"].unique()
for street in streets:
df_streets = df.query('Street_name == @street')
df_streets.to_excel(street + '.xlsx')
我有一个数据框 A。我需要将它分成具有匹配街道名称的较小数据框。
这是我的数据框:
id | Location_name | Street_Number | Street_name | Object_needed |
---|---|---|---|---|
1 | 麦当劳 | 4 | 奥朗德街 | C400/P200 |
2 | 奥朗德 | 175 | 奥朗德街 | Porte socle simple S20 |
3 | 体育场 | 197 | 波捷街 | CCPI S20 6980138 |
4 | 国王朱埃 | 33 | 波捷街 | Coffret CCPI CIBE 单声道 |
5 | 加勒比清洁 | 6 | 加利斯贝 | Coffret CCPI CIBE 单声道 |
我想要的结果:
数据帧 1:
id | Location_name | Street_Number | Street_name | Object_needed |
---|---|---|---|---|
1 | 麦当劳 | 4 | 奥朗德街 | C400/P200 |
2 | 奥朗德 | 175 | 奥朗德街 | Porte socle simple S20 |
数据框 2:
id | Location_name | Street_Number | Street_name | Object_needed |
---|---|---|---|---|
3 | 体育场 | 197 | 波捷街 | CCPI S20 6980138 |
4 | 国王朱埃 | 33 | 波捷街 | Coffret CCPI CIBE 单声道 |
数据帧 3:
id | Location_name | Street_Number | Street_name | Object_needed |
---|---|---|---|---|
5 | 加勒比清洁 | 6 | 加利斯贝 | Coffret CCPI CIBE 单声道 |
目标是创建与相应街道名称一样多的数据框。
我正在使用 groupby:
grouper = [g[1] for g in df.groupby(['Street_name'])]
有没有办法用 street_name
他们正在上课的名字来命名他们?在我的示例中,第一个不是名称 grouper[0]
,而是 Rue_de_Hollande
。
最后,您知道一次将所有数据帧导出为 excel 格式吗?
如果您希望街道在单独的 excel 个文件中,您可以使用 Pandas ExcelWriter:
streets = set(df.Street_name)
with pd.ExcelWriter('all_streets_excel.xlsx', mode='w') as writer:
for street_name in streets:
street_df = df[df.loc[:, 'Street_name'] == street_name]
street_df.to_excel(writer, street_name)
这可以通过 pandas.query 和 pandas.to_excel 方法通过创建唯一街道名称列表并在 for 循环中迭代来实现:
streets = df["Street_name"].unique()
for street in streets:
df_streets = df.query('Street_name == @street')
df_streets.to_excel(street + '.xlsx')