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:数组必须具有相同的长度
非常感谢任何帮助,谢谢。
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)