我有一个名为“data”的列表,通常包含包含 3 个字段的列表,但有时也可以包含 4 个:
[['Bob', 'DeVito', '100 Lbs'], ['Mac', 'Charles', '150 Lbs']]
如果我尝试将数据转换为至少一个列表有 4 个元素的数据框,它将运行良好:
df = pd.DataFrame(data, columns=['First', 'Last', 'Weight', 'Height'])
但是如果我针对上面看到的列表运行它,它会崩溃说
ValueError: 4 columns passed, passed data had 3 columns
当我给它一个没有第四列的列表列表时,如何才能将其转换为高度列为空白值的 df 而不会崩溃?这样,转换将在仅包含 len 3 elems、len 4 elems 或两者组合的列表上运行。
期望的结果:
First Last Weight Height
Bob DeVito 100 Lbs None
Mac Charles 150 Lbs None
最佳答案
这应该可以解决您的问题。首先,它在 try/except 循环中从列表元素创建一个字典,这样如果没有高度值,它不会抛出错误,而是放入 np.nan 。最后,它从字典创建 pandas 数据框。
import pandas as pd
import numpy as np
list = [['Bob', 'DeVito', '100 Lbs'], ['Mac', 'Charles', '150 Lbs']]
dict = {}
try:
dict = [{ "First":a[0], "Last":a[1], "Weight":a[2], "Height": a[3]} for a in list]
except:
dict = [{"First": a[0], "Last": a[1], "Weight": a[2], "Height": np.nan} for a in list]
print(dict)
df = pd.DataFrame(dict)
print(df)
Output :
First Last Weight Height
0 Bob DeVito 100 Lbs NaN
1 Mac Charles 150 Lbs NaN
关于python - 将 python 列表转换为数据帧时,ValueError : 4 columns passed, 传递的数据有 3 列。如果3通过了如何添加空白值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63272148/