python - 如何使用值满足条件的列名填充 pandas 数据框中的列?

标签 python pandas

我需要数据框中的一个新列,其中填充了满足指定条件的列名。本例中为> 1

我尝试遍历有问题的列(它是 df.columns 的子集),但没有提供所需的输出。

df = pd.DataFrame([
    [1, 0, 2, 2],
    [1, 1, 0, 0],
    [0, 2, 3, 2],
    [2, 2, 1, 1]],
  columns=['col1', 'col2', 'col3', 'col4'])
cols = df.columns[:-1]
df['d'] = ''
for col in cols:
    df.loc[df[col] > 1, 'd'] = col

当前输出:

out = pd.DataFrame([
    [1, 0, 2, 2, 'col3'],
    [1, 1, 0, 0, ''],
    [0, 2, 3, 2, 'col3'],
    [2, 2, 1, 1, 'col2']],
    columns=['col1', 'col2', 'col3', 'col4', 'd'])

我需要的是满足该条件的所有列的信息,因此输出如下:

out = pd.DataFrame([
    [1, 0, 2, 2, 'col3'],
    [1, 1, 0, 0, ''],
    [0, 2, 3, 2, 'col2,col3'],
    [2, 2, 1, 1, 'col1,col2']],
    columns=['col1', 'col2', 'col3', 'col4', 'd'])

如有任何帮助,我们将不胜感激。

最佳答案

 df['d'] = (df.iloc[:,:-1] > 1).apply(lambda x: ','.join([col for cond,col in zip(x,df.columns) if cond]), axis=1)

结果:

   col1  col2  col3  col4          d
0     1     0     2     2       col3
1     1     1     0     0           
2     0     2     3     2  col2,col3
3     2     2     1     1  col1,col2

关于python - 如何使用值满足条件的列名填充 pandas 数据框中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559537/

相关文章:

python - Pandas - 处理空单元格

python - 在 python 列表中保留最常出现的值

java - python 中的 Fernet 类加密和 java 中的解密不起作用

python - 为什么没有引发 ValueError ?

python - Pandas - 将列子集行与主列中的匹配值对齐

python - 括号 URL 调度程序 Django?

python - 在 Pandas 图中仅隐藏轴标签,而不是整个轴

Python:按 CSV 中的唯一列合并重复项

python - pandas index_col ="datetime"使 df ['datetime' ] 不可用

python - 为什么 PyCharm 单元测试发现不适用于目录?