如何在Pandas DataFrame不同列中对齐追加不同长度列表?
将不同长度列表对应放入DataFrame指定列
现有代码
list1 = [1, 2] list2 = [2, 3, 4] main = pd.DataFrame(columns=['a','b']) main = main.append(pd.DataFrame(list1, columns=['a']), ignore_index=True) main = main.append(pd.DataFrame(list2, columns=['b']), ignore_index=True)
当前输出
a b 0 1.0 NaN 1 2.0 NaN 2 NaN 2.0 3 NaN 3.0 4 NaN 4.0
期望效果
让两个列表的元素对应到同一行展示,短列表的后续行对应列自动补NaN,即目标输出为:
a b 0 1.0 2.0 1 2.0 3.0 2 NaN 4.0
解决方案
方法一:直接用字典构造DataFrame
pandas会自动按索引对齐两个列表的元素,长度不足的列自动填充NaN:
import pandas as pd list1 = [1, 2] list2 = [2, 3, 4] main = pd.DataFrame({'a': list1, 'b': list2})
方法二:用Series构造列后合并
如果需要分步处理列数据,可以先将列表转为Series,再按列合并:
import pandas as pd list1 = [1, 2] list2 = [2, 3, 4] col_a = pd.Series(list1, name='a') col_b = pd.Series(list2, name='b') main = pd.concat([col_a, col_b], axis=1)
原代码中append方法是将两个DataFrame按行拼接,所以会出现上下堆叠的情况,而上述两种方法是按索引对齐列元素,能满足同行展示的需求。
内容的提问来源于stack exchange,提问作者fenil savani
相关产品推荐
相关产品推荐

