[英]Python Pandas just read columns with names using lambda
您好,我知道有一种方法可以加载 csv 或 excel 数据并使用 lambda 表达式忽略空列名。
我以前用过这个表达,但现在不明白了。 是这样的:
import pandas as pd
file = 'my_file.csv'
with open(file) as w:
df = pd.read_csv(w, usecols=lambda x: x not None)
所以我从 csv 得到这个标题:
A列 | B列 | D列 | G列 | |||
---|---|---|---|---|---|---|
单元格 1 | 单元格 2 | 单元格 3 | 单元格 4 | 单元格 5 | 单元格 6 | 13号牢房 |
单元格 7 | 单元格 8 | 单元格 9 | 单元格 10 | 单元格 11 | 12号牢房 | 14号牢房 |
因此:
A列 | B列 | D列 | F列 |
---|---|---|---|
单元格 1 | 单元格 2 | 单元格 4 | 单元格 6 |
单元格 7 | 单元格 8 | 单元格 10 | 12号牢房 |
代替
A列 | B列 | 未命名:2 | D列 | 未命名:4 | G列 | 未命名:5 |
---|---|---|---|---|---|---|
单元格 1 | 单元格 2 | 单元格 3 | 单元格 4 | 单元格 5 | 单元格 6 | 13号牢房 |
单元格 7 | 单元格 8 | 单元格 9 | 单元格 10 | 单元格 11 | 12号牢房 | 14号牢房 |
我不知道我的 lambda 表达式中的表达式或拒绝它的准确方法。
我知道有一种方法可以通过这种方式读取 csv,我不想在 usecols 列表中使用每个使用过的 header,因为列表会很长。
已经感谢您的帮助。
拜姆
Pandas 实际上读取的列没有 header 已经被“未命名:#”替换。 您可以通过运行来检查
pd.read_csv(w, usecols=lambda x: print(x))
因此,您可能想要删除这些列,而是过滤掉以“未命名”开头的列
df = pd.read_csv(w, usecols=lambda x: not x.startswith("Unnamed"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.