在Julia中实现DataFrame的explode(展开)操作
在Julia中实现类似Pandas explode的数组展开并转换为DataFrame
首先确保你已经安装了DataFrames包(未安装的话,先运行using Pkg; Pkg.add("DataFrames"))。
步骤1:导入包并定义原始数组
using DataFrames # 你的原始嵌套数组 original_array = Any[Any[["link_1", "link_2", "link_3"], "82", ["A B", "C D", "E F", "G H", "I J"]]]
步骤2:提取数据并构造初始DataFrame
先把嵌套数组里的三个元素分别提取出来,再创建包含待展开列的初始DataFrame:
# 提取数组内的三个核心部分 links = original_array[1][1] value = original_array[1][2] arr = original_array[1][3] # 构造初始DataFrame,此时link列是一个数组类型 df_initial = DataFrame( link = [links], value = [value], array = [arr] )
步骤3:使用flatten函数展开link列
Julia的DataFrames.flatten函数对应Pandas的explode功能,它会将数组类型的列拆分为多行,其他列的数值会自动重复匹配:
df_final = flatten(df_initial, :link)
执行后得到的df_final就是目标结构:每一行对应一个展开后的link值,value列始终为"82",array列保持原数组不变(如果需要展开array列,只需把flatten的第二个参数换成:array即可)。
最终结果示例
df_final的内容如下:
| row | link | value | array |
|---|---|---|---|
| 1 | link_1 | 82 | ["A B", "C D", "E F", "G H", "I J"] |
| 2 | link_2 | 82 | ["A B", "C D", "E F", "G H", "I J"] |
| 3 | link_3 | 82 | ["A B", "C D", "E F", "G H", "I J"] |
内容的提问来源于stack exchange,提问作者Anwesh saha
相关产品推荐
相关产品推荐

