【问题标题】:How to remove only the trailing empty columns in a dataframe?如何仅删除数据框中的尾随空列?
【发布时间】:2021-03-01 04:37:56
【问题描述】:

我有一个这样的数据框:

data = [['a','b','','d','e','f'],
        ['g','','','h'],
        ['i','j','','k'],
        ['l','','m']]

df = pd.DataFrame(data)

我试过了:

df = df.fillna('')
sep = '*'
df.applymap(str).apply(
    axis=1, func=lambda s: sep.join(el for el in s if el) 
).to_csv(
    'output.csv', index=False, header=False
)

在文件 output.csv 中,删除了空列,但我只想删除数据框中的尾随列。

以上代码生成的Output.csv:

a*b*d*e*f
g*h
i*j*k
l*m

预期输出.csv:

a*b**d*e*f
g**h
i*j**k
l**m

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:

    空字符串在 Python 中是虚假的,这意味着您的列表理解将过滤掉空字符串的数据框元素。要获得所需的输出,您可以简单地删除列表推导并直接加入原始列表,因为您似乎想要包含所有元素:

    df = df.fillna('')
    sep = '*'
    df.applymap(str).apply(
        axis=1, func=lambda s: sep.join(s).strip('*')
    ).to_csv(
        'output.csv', index=False, header=False
    )
    

    【讨论】:

    • 根据您的逻辑,第二行将是 g ** h* 。我不想最后*
    • @AtomStore 然后在你的 lambda 函数中调用strip('*'),它应该可以满足你的需求。
    猜你喜欢
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多