我有一个EXCEL表,我想转移到一个dataframe匹配我们的项目的标准与22个不同的列。然而,原始的EXCEL表只有13列,所以我试图将丢失的列添加到从文件中读取的数据框中。
然而,这也带来了一些挑战:
1.当给dataframe分配一个空列表[]
时,我得到一个通知,即添加的列的大小与原始的dataframe不匹配,原始的dataframe大约有9000行。
1.当将np.nan
分配给dataframe时,创建包含所有必需列的联合dataframe工作正常:f_unique.loc[:, "additional_info"] = np.nan
但是数据中包含np.nan
会在稍后的脚本中导致问题,因为所有其他单元格都包含列表,所以我会展平单元格数据。
所以我尝试用一个包含字符串“n/a”的列表替换np.nan
:grouped_df = grouped_df.replace(np.nan, ["n/a"])
然而,这给了我以下错误:TypeError: Invalid "to_replace" type: 'float'
有没有一种方法可以直接将9000 x [“n/a”]分配给 Dataframe 中的每个新列?这很有可能解决这个问题。
3条答案
按热度按时间vwkv1x7d1#
将
DataFrame.reindex
与Index.union
一起使用,对于用于填充列表的新列:trnvg8h32#
仅
reindex
:如果你想要一个列表作为默认值(你应该避免):
uubf1zoe3#
在一天结束时,上面的重新索引(参见答案)结合多次将相同的列表分配给dataframe列对我的用例效果最好:
多次添加列表当然不是最优雅的解决方案,但它确实做到了。