我有几个列表和一个字典,想创建一个 pd 数据框。有人可以帮助我吗,我似乎错过了一些东西:
一个简单的例子如下:
dict={"a": 1, "b": 3, "c": "text1"}
l1 = [1, 2, 3, 4]
l3 = ["x", "y"]
使用系列我会这样做:
df = pd.DataFrame({'col1': pd.Series(l1), 'col2': pd.Series(l3)})
并且会按预期在 df 中包含列表
因为 dict 会做
df = pd.DataFrame(list(dic.items()), columns=['col3', 'col4'])
并期望这个结果:
col1 col2 col3 col4
1 x a 1
2 y b 3
3 c text1
4
问题是这样的,第一个 df 将被 pd.Dataframe 的第二次调用覆盖
我将如何做到只有一个 df 和 4 列?
我知道一种方法是将 dict 拆分为 2 个单独的列表,然后仅在 4 个列表上使用 Series,但我认为有更好的方法可以做到这一点,从上面的 2 个列表和 1 个 dict 中可以直接使用一个 df 4 列。
谢谢你的帮助
为什么不通过dict.keys()
和dict.values()
而不是使用单独构建每一列dict.items()
df = pd.DataFrame({
'col1': pd.Series(l1),
'col2': pd.Series(l3),
'col3': pd.Series(dict.keys()),
'col4': pd.Series(dict.values())
})
print(df)
col1 col2 col3 col4
0 1 x a 1
1 2 y b 3
2 3 NaN c text1
3 4 NaN NaN NaN
或者:
column_values = [l1, l3, dict.keys(), dict.values()]
data = {f"col{i}": pd.Series(values) for i, values in enumerate(column_values)}
df = pd.DataFrame(data)
print(df)
col0 col1 col2 col3
0 1 x a 1
1 2 y b 3
2 3 NaN c text1
3 4 NaN NaN NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句