项目场景:处理数据时遇到个需要把DataFrame中嵌套列表元素拆分的工作
问题描述
我有一个这样的DataFrame
就意思是想把它每一个县对应的Mean_Features(一个嵌套的列表),拆分成许多列
每一列就是列表中的一个元素
解决方案:
遍历读取每行的Mean_Features列,通过
pd.DataFrames()
直接将list展开,然后再和county列进行拼接
因为对于类似这样的数据A=[1, 2, 3, 4]或A=[[1], [2], [3], [4]]的列表,经过pd.DataFrame()
可以直接变成下图这样的DataFrame
data1 = [1, 2, 3, 4]
data2 = [[1], [2], [3], [4]]
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
所以每一行的操作就可以通过下面这行代码实现
data = pd.concat([pd.DataFrame([row["County"]], columns=["county"]), pd.DataFrame(row["Mean_Features"]).T], axis=1)
# 由于pd.DataFrame(row["Mean_Features"])直接生成的是一列,所以将其进行转置
就能得到一个1×769的dataframe
完整代码
# 创建一个包含769列的空DataFrame
num_columns = 768
column_names = ['county']
df_final = pd.DataFrame(columns=column_names)
for index, row in df_new.iterrows():
data = pd.concat([pd.DataFrame([row["County"]], columns=["county"]), pd.DataFrame(row["Mean_Features"]).T], axis=1)
# print(data)
# 使用 concat 函数纵向连接两个DataFrame
df_final = pd.concat([df_final, data], axis=0, ignore_index=False)
# df_final