创建具有不同大小列的 Pandas Dataframe

Mic*_*ick 2 python csv excel dataframe pandas

我需要创建一个数据框并将其转换为 CSV,因此输出将如下所示:

People,Age,Pets,Pet Age
Tom,24,Dog,5
Jim,30,Cat,10,
Sally,21,Dog,1
     ,  ,Dog,3
     ,  ,Cat,15
     ,  ,Horse,10
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,宠物比人多,对象之间的关系并不重要。更改为 Excel 后的输出应如下所示:

 _______________________________
| Person | Age | Pets | Pet Age |
|-------------------------------|
|  Tom   | 24  | Dog  |  5      |
|-------------------------------|
|  Jim   | 30  | Cat  |  10     |
|-------------------------------|
|  Sally | 21  | Dog  |  1      |
|-------------------------------|
|        |     | Cat  |  15     |
|-------------------------------|
|        |     | Horse|  10     |
---------------------------------
Run Code Online (Sandbox Code Playgroud)

到目前为止我的代码是:

df = pd.DataFrame({
    "People": [Tom, Jim, Sally],
    "Age": [24, 30, 21],
    "Pets": [Dog, Cat, Dog, Dog, Cat, Horse],
    "Pet Age": [5, 10, 1, 3, 15, 10]

})
Run Code Online (Sandbox Code Playgroud)

但它给了我: ValueError:数组必须具有相同的长度

非常感谢任何帮助,谢谢。

tdy*_*tdy 5

DataFrame()您可以使用DataFrame.from_dict()with来代替构造函数orient='index'

data = {
    'People': ['Tom', 'Jim', 'Sally'],
    'Age': [24, 30, 21],
    'Pets': ['Dog', 'Cat', 'Dog', 'Dog', 'Cat', 'Horse'],
    'Pet Age': [5, 10, 1, 3, 15, 10],
}

df = pd.DataFrame.from_dict(data, orient='index').T

#   People   Age   Pets  Pet Age
# 0    Tom    24    Dog        5
# 1    Jim    30    Cat       10
# 2  Sally    21    Dog        1
# 3   None  None    Dog        3
# 4   None  None    Cat       15
# 5   None  None  Horse       10
Run Code Online (Sandbox Code Playgroud)

写入 csv:

df.to_csv('pets.csv', index=False)

# People,Age,Pets,Pet Age
# Tom,24,Dog,5
# Jim,30,Cat,10
# Sally,21,Dog,1
# ,,Dog,3
# ,,Cat,15
# ,,Horse,10
Run Code Online (Sandbox Code Playgroud)