python - 如何仅删除数据框中的尾随空列?
问题描述
我有一个这样的数据框:
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 中是虚假的,这意味着您的列表理解将过滤掉空字符串的数据框元素。要获得所需的输出,您可以简单地删除列表推导并直接加入原始列表,因为您似乎想要包含所有元素:
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
)
推荐阅读
- python - 为什么 Python Selenium 点击按钮在亚马逊上不起作用
- sockets - HoloLens 2 在插入 Windows 时停止接收 UDP 多播数据包 - 为什么以及如何始终启用 UDP 多播?
- sql - 如果满足 SQL“有”子句或辅助条件,则返回行
- python - 错误的形状数据集Tensorflow
- flutter - M1 Mac 上的 Pod 安装错误 - 使用 shared_preferences 等本机代码的 Flutter 项目
- swift - List 中的 ForEach 停止 DestinationView 中的更新传播
- imagemagick - 尝试使用 Image Magick magick Test.png Test.txt 将 png 转换为文本时出现错误
- sql-server - SQL Server 作业 - 用于 T-SQL 的 RunAs
- python - 根据 dict 值更改列表中的元素
- r - 在 R 中将 Group by 与 mutate、case_when、any() 和 all() 函数一起使用