[英]How to remove a NaN column?
我的文本文件有3列,例如:
1 2 3
2 4 6
3 6 9
我想像这样安排它:
wave shape freq
1 2 3
2 4 6
3 6 9
我使用以下脚本:
import glob
import pandas as pd
import_file = glob.glob('data.txt')
for files in import_file:
intial_data = pd.read_csv(files, header=None, delimiter="\t").values
table = pd.DataFrame(intial_data, columns = ['wave' , 'shape', 'freq')
print(table)
它给了我
错误:传递的值的形状为(4,150),索引暗示(3,150)
我通过添加另一个列指示符X代替了安排和描述表格的行
table = pd.DataFrame (intial_data, columns = ['wave' , 'shape', 'freq','x'])
简而言之,它运作良好,并给了我这个结果
wave shape freq x
0 1.0000 2.0000 3.0000 NaN
1 2.0000 4.0000 6.0000 NaN
2 3.0000 6.0000 9.0000 NaN
我无法理解我们的NaN列,因此需要将其从工作中删除
请提出任何建议?
不要接受丢弃NaN
的建议。 那将是XY Problem
的解决方案,而不是原因的解决方案。
改用
intial_data = pd.read_csv('data.txt', header=None, delim_whitespace=True)
要么
intial_data = pd.read_csv('data.txt', header=None, sep='\s+')
出现此错误的原因是因为您的data.txt
文件最后有一个额外的选项卡。 pandas
将其解释为NaN
的额外一列。
所以,即使你看到
1 2 3
2 4 6
3 6 9
您最可能拥有的是
1\t2\t3\t
2\t4\t6\t
3\t6\t9\t
最后一个\\t
添加额外的列。
df.dropna(1,'all')
输出:
wave shape freq
0 1.0 2.0 3.0
1 2.0 4.0 6.0
2 3.0 6.0 9.0
或者你也可以直接读取文件中的第3列与usecols
的参数pd.read_csv
。 使用以下代码,您无需首先读取intial_data
直接获得table
变量:
table = pd.read_csv(files,
header=None,
delimiter="\t",
usecols=range(3),
names=['wave', 'shape', 'freq'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.