python - 从 pandas 列和行数据创建字符串

标签 python pandas

我有兴趣生成一个由 pandas 行和列数据组成的字符串。给定以下 pandas 数据框,我只对从具有正值的列生成字符串感兴趣

index    A    B    C
  1      0    1    2
  2      0    0    3
  3      0    0    0
  4      1    0    0

我想创建一个新列,附加一个字符串,列出一行中哪些列为正。然后我会删除数据来自的所有行:

index    Positives
  1       B-1, C-2
  2       C-3
  4       A-1

最佳答案

这是使用 pd.DataFrame.apply + pd.Series.apply 的一种方法:

df = pd.DataFrame([[1, 0, 1, 2], [2, 0, 0, 3], [3, 0, 0, 0], [4, 1, 0, 0]],
                  columns=['index', 'A', 'B', 'C'])

def formatter(x):
    x = x[x > 0]
    return (x.index[1:].astype(str) + '-' + x[1:].astype(str))

df['Positives'] = df.apply(formatter, axis=1).apply(', '.join)

print(df)

   index  A  B  C  Positives
0      1  0  1  2   B-1, C-2
1      2  0  0  3        C-3
2      3  0  0  0          
3      4  1  0  0        A-1

如果您需要过滤掉零长度字符串,您可以利用空字符串通过 bool 计算为 False 的事实:

res = df[df['Positives'].astype(bool)]

print(res)

   index  A  B  C  Positives
0      1  0  1  2   B-1, C-2
1      2  0  0  3        C-3
3      4  1  0  0        A-1

关于python - 从 pandas 列和行数据创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915875/

相关文章:

python - Django - 需要只能处理年份或年份和月份值的日期时间字段

python - 获取 pandas DataFrame 的最后一行,作为可迭代对象

python - 如何使用字典作为标题来使用 pd.apply() 为数据框分配值

python - 如何在 pandas 数据框中复制和修改日期行 Python

python - 限制用户输入数字? Tkinter-Python

python - Scikit 中数据集的初始可视化 - head() 命令

python - 如何将数据框转换为字典

python - 根据 pandas 索引范围合并行

python - 在 Python 中用零填充多个值

python - 最后分层 K 折性能独特