首页 > 解决方案 > 如何格式化具有不同数组大小的 Pandas DataFrame

问题描述

我需要动态创建一个看起来像这样的 Excel 电子表格:

 _______________________________________________________
| Name | Start Date | Title | Companies | Sub-companies |
|-------------------------------------------------------|
| Jim  | 01/01/2010 |  CTO  |  Google   |   YouTube     |
|-------------------------------------------------------|
|      |            |       |           |    FitBit     |
|-------------------------------------------------------|
|      |            |       |   Apple   |    NextVR     |
|-------------------------------------------------------|
|      |            |       |           |    Beats      |
|-------------------------------------------------------|
| Tom  | 12/12/2020 |  CEO  |  Amazon   |   Audible     |
|-------------------------------------------------------|
|      |            |       |           |    Zappos     |
|-------------------------------------------------------|
|      |            |       |  Samsung  |  Biologics    |
|-------------------------------------------------------|
|      |            |       |           |    Cheil      |
|-------------------------------------------------------|

到目前为止,这是我的代码:

import pandas as pd

df = pd.DataFrame({
    "Name": ["Jim", "Tom"],
    "Start Date": ["01/01/2010", "12/12/2020"],
    "Companies": ["Google", "Apple", "Amazon", "Samsung"],
    "Sub-companies": [
         "YouTube", "FitBit", "NextVR", "Beats", 
         "Audible", "Zappos", "Biologics", "Cheil"
         ]
})

print(df)

df.to_excel("output.xlsx", sheet_name="Webtoons Comic Data")

这不起作用,因为“所有数组必须具有相同的长度”我该怎么做呢?我目前的计划是通过在每个列数组中添加空格来逐行制作。有更好的方法吗?我不需要帮助填充数组,只需构建 DF 本身。谢谢你的帮助。

标签: pythonarraysexcelpandasdataframe

解决方案


正如我在评论中提到的,我们可以通过尝试设置索引来做到这一点

df = pd.DataFrame({'Name':["Jim","Jim","Jim","Jim","Tom","Tom","Tom","Tom"],
"Companies": ["Google","Google", "Apple","Apple", "Amazon", "Amazon","Samsung","Samsung"],
    "Sub-companies": [
         "YouTube", "FitBit", "NextVR", "Beats", 
         "Audible", "Zappos", "Biologics", "Cheil"
         ]
})
df.set_index(['Name','Companies'])
               Sub-companies
Name Companies              
Jim  Google          YouTube
     Google           FitBit
     Apple            NextVR
     Apple             Beats
Tom  Amazon          Audible
     Amazon           Zappos
     Samsung       Biologics
     Samsung           Cheil
#df.set_index(['Name','Companies']).to_excel()

推荐阅读