我有一个关于将数据框列中的列表分成多行的问题。
假设我有这个数据框:
Job position Job type id
0 [6] [1] 3
1 [2, 6] [3, 6, 5] 4
2 [1] [9] 43
我想要数字的每个单一组合,因此最终结果将是:
id Job position Job type
0 3 6.0 1.0
1 4 2.0 3.0
2 4 2.0 6.0
3 4 2.0 5.0
4 4 6.0 3.0
5 4 6.0 6.0
6 4 6.0 5.0
7 43 1.0 9.0
因为现在我得到以下结果:
id Job position Job type
0 3 6.0 1.0
1 4 2.0 3.0
2 4 6.0 6.0
3 4 NaN 5.0
4 43 1.0 9.0
为了得到上面的结果,我做了:
df = df.set_index(['id'])
(df.apply(lambda x: pd.DataFrame(x.tolist(),index=x.index)
.stack()
.rename(x.name)).reset_index())
与斯科特·波士顿(Scott Boston)的建议类似,我建议您分别展开各列,然后将它们合并在一起。
例如,对于“职位”:
>>> df['Job position'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
value
index
0 6.0
1 2.0
2 1.0
1 6.0
并且,一起:
df = pd.DataFrame({'Job position': [[6], [2, 6], [1]], 'Job type': [[1], [3, 6, 5], [9]], 'id': [3, 4, 43]})
jobs = df['Job position'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
types = df['Job type'].apply(pd.Series).reset_index().melt(id_vars='index').dropna()[['index', 'value']].set_index('index')
>>> pd.merge(
pd.merge(
jobs,
types,
left_index=True,
right_index=True),
df[['id']],
left_index=True,
right_index=True).rename(columns={'value_x': 'Job positions', 'value_y': 'Job type'})
Job positions Job type id
0 6.0 1.0 3
1 2.0 3.0 4
1 2.0 6.0 4
1 2.0 5.0 4
1 6.0 3.0 4
1 6.0 6.0 4
1 6.0 5.0 4
2 1.0 9.0 43
如何将这列列表拆分为两列? 期望的结果:
问题内容: 我有一列如下所示的熊猫: 我需要将列表的此列分为2列,并使用。 问题答案: 您可以使用与构造函数通过转换为创建通过使用: 对于新的DataFrame: 解决方案apply(pd.Series)非常慢:
问题内容: 我有一个如下所示的Pandas数据框: 我正在尝试将列表分成几列,如下所示: 没有值的列(因为列表没有那么长)用空白或NaN或其他内容填充。 我见过类似的回答这一个和其他类似的给它,而他们在长度相等的名单工作,他们都扔错误,当我尝试使用的长度不等的列表中的方法。有什么好办法吗? 问题答案: 尝试: 包括 我们可以通过以下方式确定所有格式:
问题内容: 我正在处理一个较大的csv文件,并且最后一列的旁边是一串文本,我想用一个特定的定界符来分割它。我想知道是否有使用pandas或python的简单方法? 我想先按空格再在列中按冒号分开,但每个单元格将导致列数不同。我具有重新排列列的功能,因此列位于工作表的末尾,但是我不确定从那里开始如何做。我可以使用内置函数和快速宏在中完成此操作,但是我的数据集记录太多,无法处理。 最终,我想记录约翰·
我有一个这样的数据框: 看起来像这样: 我的目标是对列和中具有相同值的行进行分组,并以如下方式合并列的内容: 如您所见,列和中具有相同项的行将被合并,而如果至少有一行不同,它们将保持原样。我的想法是使用和函数,如下所示: 但是Python返回错误消息: 你能告诉我我的代码有什么问题吗?为了实现我的目标,我应该写些什么? 注意:我不关心可以丢弃的列会发生什么。
问题内容: 我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键: 我想将此数据读入不提供过程语言的搜索引擎中。 那么,有没有一种方法, 要么 就这一栏中加入 或 该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示: 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。 问题答案: 在MySQL中,可以通过以下方式实现 现在要获取逗号分隔的v