【问题标题】:Add columns to a dataset without any columns将列添加到没有任何列的数据集
【发布时间】:2019-11-30 02:37:38
【问题描述】:

我想将数据集加载到数据框中,然后将列添加到数据集中。现在,当我添加列时,它会删除第一行数据。

可视化发生;

假设以下来自 csv 的数据已加载到数据帧中

21,5,14

456,47,1

47,89,66

# Assume that the user uploaded a CSV file
df = pd.read_csv(
            io.StringIO('csv_file_data', index_col=False, low_memory=False)

看起来像这样

   21  5  14
0  456 47 1
1  47  89 66

所以基本上第一行数据现在显示为列,如果您可视化数据框。

什么时候,我尝试添加列 其中,file_structure 是一个包含列的列表

df.columns = file_structure

现在看起来像这样;

   x   y  z
0  456 47 1
1  47  89 66

【问题讨论】:

  • file_structure 是一个列表,['x', 'y', 'z']
  • 使用 header=None 然后运行你的代码,它应该可以工作
  • 添加 'header=None' 作为参数就可以了!谢谢,iamklaus.. 你想把它作为答案吗?
  • @JohnDign 怎么样?那么您的问题我不清楚,您想将 x, y, x 分配为列并将原始列设为一行,header = None 还不够,您还检查我的吗?
  • header = None, 放入0, 1, 2..... df.columns.

标签: python python-3.x pandas dataframe


【解决方案1】:

使用names参数:

df = pd.read_csv(io.StringIO('csv_file_date'), index_col=False, low_memory=False, names=file_structure)

或者,如果您在阅读时不想要它:

df = df.T.reset_index().T.reset_index(drop=True)
df.columns = file_structure

【讨论】:

  • 问题是,在添加之前,我必须先读取数据。因为该文件在位置 0,0 包含一个版本,该版本确定哪些列属于给定数据集
  • @JohnDign 检查我的答案的底部,如果可行,请不要忘记接受并投票。
【解决方案2】:
    df = pd.read_csv(
            io.StringIO(decoded.decode('utf-8')), index_col=False, low_memory=False, header=None, names=file_structure
)

names 允许您设置列名 header 设置索引以用作列名

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html#pandas.read_csv

【讨论】:

  • 这不是和我的一样吗?
  • 差不多,包括手动设置header=None。这是需要的。您的编辑使用第一行作为索引,然后将其删除。所以第一行会丢失。
猜你喜欢
  • 2020-10-05
  • 2023-02-09
  • 2021-06-08
  • 2015-02-13
  • 2019-07-14
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2017-01-24
相关资源
最近更新 更多