乍一看,我认为编写一个解析来完成这项工作是小菜一碟。
但是后来我让自己陷入了一个很深的兔子洞,似乎不可能出去,调查什么是在python中操作字符串,集合和列表的最佳技术。
在Pandas中将一个 Dataframe 的一列转换为多列有那么难吗?
Source是一个包含3列的CSV文件,如下所示:file,coords,areas 0001.png,['181.5; 339.5','236.54166666666666; 201.583333……]、[136.0、153.0、44.5、43.0、57.5、68.0、153.0、……
导入CSV文件后,将其导入pandas dataframe。第二列和第三列被指定为Series类型
print('type:', type(df1.x_y_coords))
print('type:', type(df1.area))
type: <class 'pandas.core.series.Series'>
type: <class 'pandas.core.series.Series'>
列坐标和区域必须拆分为多个列,其中系列的每个元素(即python列表)必须成为 Dataframe 的列
如静态示例中所示
df = pd.DataFrame(columns=['file','coords','areas'])
...(列的变换)...
df = pd.DataFrame(columns=['file','c1','c2','c3','c4',...,'a1','a2','a3','a4',...])
另一个挑战是列将根据原始列的长度而变化的事实:坐标和面积。也就是说,一个文件可以有8个坐标和8个区域,而另一个文件可能有14个坐标和14个区域。
以便可以用null填充空列。
坐标和面积的长度始终相同。实际上,它们是平面图中图形的坐标和面积。
在Pandas中将这些列转换为 Dataframe 的多列的最佳技术是什么?
4条答案
按热度按时间x6h2sr281#
您可以通过执行
merge
+apply(pd.Series)
来完成您想要的操作但是,在加载到DataFrame之前,似乎需要解析它。
使用的样本数据:
aamkag612#
gmol16393#
IIUC,您可以用途:
输出:
0pizxfdo4#
Series.str.split()
似乎是最好的选择!我尝试了以下命令行:
它返回以下 Dataframe :
而现在,它只是一个清理、重命名和合并的问题。
我在下面的文档中找到了很好的资源信息:
https://sparkbyexamples.com/pandas/pandas-split-column/#:~:text = In%20Pandas%2C%20the%20apply(),to%20split%20into%20two%20columns.
感谢您的快速反馈!像往常一样!)最好的祝愿