【问题标题】:Turning a single column of csv data into a new csv file with multiple columns将单列 csv 数据转换为具有多列的新 csv 文件
【发布时间】:2018-09-25 12:36:50
【问题描述】:

我对 python 很陌生,想知道如何将单列 csv 转换为新 csv 文件中的多列。该脚本必须以一个滑动窗口为 3 或我想要的任何长度窗口的步骤向下迭代源 csv 列。

因此,假设源 csv 在单个列中包含数字 1 到 10,滑动窗口为 3,输出 csv 将是: 第 1 列(1 至 3) 第 2 列(2 至 4) 第 3 栏(3 至 5) 等等

很抱歉成为这样的菜鸟。对此(我相信很简单)问题的任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 请告诉我们你做了什么,并询问你卡在哪里。
  • 我所做的只是将 csv 加载到带有 pandas 的单列 df 中。我认为从那里开始操作数据框会更容易。将 pandas 导入为 pd 将 numpy 导入为 np df = pd.read_csv('test.csv')

标签: python csv


【解决方案1】:

正如你已经开始,你可以使用pandas 来完成你想要的。假设test.csv 文件是一个没有标题的列,您也可以使用header=None 将第一行作为数据行导入。然后你需要创建一个新的熊猫Dataframe。之后,您必须使用第 3 步(这是您指定的)迭代您的 Dataframe。在 for 循环中,您必须将新列添加到新 Dataframe。您可以选择df 数据框的第一列(这是唯一可用的列),并使用.iloc 对您的数据框进行切片,但要将新列放在新的数据框中,您必须重置您的选择使用reset_index 索引并删除旧的。

import pandas as pd

df = pd.read_csv('test.csv', header=None)
new_df = pd.DataFrame()

index = 1
for i in range(0, len(df), 3):
    new_df['Column' + str(index)] = df[0].iloc[i:i+3].reset_index(drop=True)
    index += 1

print(new_df)

此代码生成以下数据框:

    Column1  Column2  Column3  Column4
0        1        4        7     10.0
1        2        5        8      NaN
2        3        6        9      NaN

由于某种原因,10 似乎是一个浮点数。您可以使用astype 函数解决它。

【讨论】:

  • 非常感谢您的帮助。这对我来说开始变得更有意义了。
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
相关资源
最近更新 更多