python - 在 pandas python 中将列值转换为行值时出现问题?

标签 python python-3.x pandas dataframe

我有这样的数据框

County  section
 A       S1,S2
 C       ALL
 B       S1

预期输出

County    section
A          S1
A          S2
C          S1
C          S2
B          S2

我的代码

df =df.assign(sections=df.sections.replace({'ALL':df.loc[df.sections.str.split(',').str.len().idxmax(),'sections']}).str.split(',')).explode('sections')

但是上面的代码只有在我们用逗号分隔多个部分 (S1,S2,S3) 时才有效。但是当我们有没有逗号分隔的部分值时不起作用,如下所示。如何使代码同时适用于两种情况

County  Section
A       ALL
B       S1
C       ALL
D       ALL

预期输出

  County  Section
    A       S1
    B       S1
    C       S1
    D       S1

代码应该在两种情况下都能工作

最佳答案

让我们更改replace部分

s=df[df.section.ne('ALL')]
toreplace=s.loc[s.section.str.split(',').str.len().idxmax(),'section']
df.assign(section=df.section.replace({'ALL':toreplace}).str.split(',')).explode('section')
  County section
0      A      S1
1      B      S1
2      C      S1
3      D      S1

关于python - 在 pandas python 中将列值转换为行值时出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61926399/

相关文章:

python - 在加载模块之前填充模块中的命名空间

python - 推广小部件并从生成的 ui 中使用它们

Python3 - urllib.request 权限被拒绝

python - pandas 内的 np reshape 应用

如果缺少,Python 将元素添加到列表中的列表

python - 从 pandas 数据框列中检索列表元素

python - 为什么 np.linalg.norm(..., axis=1) 比写出向量范数的公式慢?

python - 在Python中编写csv

python - 返回字典覆盖所有字典的函数

python - 我应该在我编写的每个 Python 脚本中包含这个样板代码吗?