从 pandas 数据框创建单个列

Posted

技术标签:

【中文标题】从 pandas 数据框创建单个列【英文标题】:Create individual columns from pandas dataframe 【发布时间】:2018-03-05 16:36:20 【问题描述】:

我有一个从 json 文件中提取的数据集,格式为

"Y": 5, "X": [626,1,2,3], "Y": 3, "X": [3], "Y": 5, "X": [41847,1233]

我将它从 json 文件中提取到 pandas 数据框,如下所示:

X               Y  
[626,1,2,3]     5

[3]             3

[41847,1233]    5

如何转换成

 X1  X2  X3  X4  Y

626   1   2   3  5

3   NAN NAN NAN 3

41847 1233 NAN NAN 5

【问题讨论】:

【参考方案1】:

您可以使用apply 循环遍历X 列中的项目并将每个列表转换为Series 对象,这将为您提供一个数据框,其中列表中的元素排列为列:

pd.concat([df.X.apply(pd.Series).rename(columns="X".format), df.Y], axis=1)

#        X0      X1   X2   X3  Y
#0    626.0     1.0  2.0  3.0  5
#1      3.0     NaN  NaN  NaN  3
#2  41847.0  1233.0  NaN  NaN  5

df.X.apply(pd.Series)

#         0       1    2    3
#0    626.0     1.0  2.0  3.0
#1      3.0     NaN  NaN  NaN
#2  41847.0  1233.0  NaN  NaN

【讨论】:

或者df['X'].apply(pd.Series).add_prefix('X').join(df['Y'])也许? @Zero 当然。我喜欢add_prefix的用法。 谢谢。有效。 Pandas 是否为我提供了从数据框 @Psidom 中删除重复行的功能? 1.支持这个答案 2. 如果您有另一个单独的问题,请再次搜索 SO。 3. 如果没有,请重新询问。提示:是的,已经在 SO 上回答了。 @kashf34Kashf 您可以使用drop_duplicates 删除重复的行。

以上是关于从 pandas 数据框创建单个列的主要内容,如果未能解决你的问题,请参考以下文章

从具有字典列的csv构造pandas数据框

如何将多个列值连接到 Pandas 数据框中的单个列中

如何在 Python 中创建具有两列作为元组或 Pandas 数据框的单个变量?

从 json 对象创建 pandas 数据框

Python:如何将 Pandas Dataframe 行值转换为单个列?

从 json 创建的 Pandas 数据框有未命名的列 - 由于未命名的列问题,无法插入 MySQL