我正在尝试将列标题添加到以下数据集中。根据项目的规格,我不能简单地修改文件来手动添加这些标题。
我正在使用的数据示例:
38.049133 0.224026 0.05398 -19.11 -20.03
38.352526 0.212491 0.05378 -18.35 -19.19
38.363598 0.210654 0.05401 -20.11 -20.89
54.936819 0.216794 0.20114 -20.94 -21.88
54.534881 0.578615 0.12887 -19.75 -20.66
54.743075 0.508774 0.18331 -20.54 -21.53
54.867240 0.562636 0.13956 -19.95 -20.85
54.856908 0.544031 0.13938 -20.14 -21.03
54.977748 0.501912 0.13923 -20.27 -21.01
54.992762 0.460376 0.12723 -20.24 -20.83
我创建了一个包含5个字符串的数组,作为此DataFrame中每个列的标题。使用指定的标题确实只选择该列(即print(df['z'])
只打印那一列(据称),但只显示DataFrame中的所有数据,显示正常(即显示上面的样本行并检测列)当我没有指定列时,突然变成" NaN"当我从字符串数组中指定列标题时。
我的代码示例:
... imports and whatnot not shown
dataColumns = ['RA', 'DEC', 'z', 'M(g)', 'M(r)']
dataFile = pd.read_csv(data = 'file_name', delim_whitespace = True)
df = pd.DataFrame(data = dataFile, columns = dataColumns)
print(df)
上述代码的示例输出(它应该显示上面的示例数据,但添加了列标题):
RA DEC z M(g) M(r)
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
为什么没有指定'列' DataFrame的参数,数据将在指定参数后正确打印,一切显示为NaN?
任何帮助将不胜感激!
- paanvaannd
答案 0 :(得分:1)
要解决您的问题,请改用此行:
df = pd.read_csv('file_name', header=None, names=dataColumns)
pd.read_csv
会返回一个DataFrame,因此上面的行应该处理整个导入(即pd.DataFrame
的结果调用pd.read_csv
是多余的)。 header=None
表示pandas不应将CSV的第一行解释为标题,然后names=...
允许您指定要使用的列名。不应使用delim_whitespace
,因为逗号(而不是空格)似乎是数据中的分隔符(毕竟“逗号”是“csv”中的“c”)。事实上,在没有测试数据的情况下,我会说使用delim_whitespace
是NaN值背后最可能的罪魁祸首。
答案 1 :(得分:0)
您正在将使用.read_csv
时创建的数据框传递给数据框构造函数pd.DataFrame
。我真的很惊讶它没有抛出错误。
试试这个:
df = pd.read_csv(data = 'file_name', delim_whitespace = True)
df.columns = dataColumns