python - Pandas - 如何对由列表对象组成的列进行子集化?

标签 python json pandas dataframe

我正在使用从 Github 提取的 JSON 文件:

curl https://api.github.com/repos/mbostock/d3/stats/commit_activity > d3_commit-activity.json

然后,在 Pandas 中我运行了以下命令:

import pandas as pd
import numpy as np
import matplotlib.pylab as plt

df = pd.io.json.read_json("d3_commit-activity.json")

df 中的一列称为“days”,其值是格式如下的列表:

[0,0,0,1,0,1,0]
[0,0,0,0,0,1,1]
[3,0,0,0,0,0,0]

换句话说,每个列表恰好由七个数字组成。我想为这些列表中的每个元素创建七个新列,但我对类似问题的解释完全感到困惑。我尝试遵循 Bradley 的解决方案来解决此问题( pandas: How do I split text in a column into multiple rows? ),但被告知“名称‘系列’未定义”。尝试更改为“pd.Series”,它似乎适用于该命令,但在后面的命令中失败。

肯定有一种简单、直接的方法来获取这些列表并将它们分成单独的列吗?

最佳答案

让我们定义一个day_names列表:

import pandas as pd    
day_names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

那么其中任何一个都将达到预期的结果:

df[day_names] = df.days.apply(lambda x: pd.Series(x))

或者,

df[day_names] = df.apply(lambda row: pd.Series(row.days), axis=1)

关于python - Pandas - 如何对由列表对象组成的列进行子集化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271243/

相关文章:

Python 'add' 函数问题 : why won't this work?

java - 列表中枚举值的持久性注释

java - 如何在 JSON 文件的不同数组和对象中导航

python - 合并长度不等的多索引数据帧

python - python 解释器是否执行动态优化?

python - 每组的唯一值计数作为带有 Pandas 的新列

python - 为 pandas 数据框插入标题行

python - 如何更改 pandas DataFrame 标题的样式?

python - 将 Python 2D 矩阵/列表转换为表格

javascript - 为什么我的嵌套函数在 javascript 中未定义