【问题标题】:What is the python equivalent to @@ in SAS?SAS中与@@等效的python是什么?
【发布时间】:2019-03-22 02:27:02
【问题描述】:

我正在尝试将 .dat 文件导入到 pandas 数据框中进行分析。

.dat 文件中的一行包含 2 个观测值(年份、人口和犯罪),如下所示:

1960  179323175  3384200  1961  182992000  3488000

Marcin's solution 非常有帮助,但是,我似乎在一行上有多个观察结果(因为 .dat 文件是结构化的)。是否有与 SAS 中的 @@ 选项等效的选项,它允许 pandas 指定列数(或更好的解决方案)?谢谢。

#importing .dat files into pandas
with open('Data_Exercises/CHAPTER4/DATA for Exercises 4.1 and 4.4.dat','r') as f:
    #next(f) # this is what you would write to skip the first row.skip first row
    df = pd.DataFrame((l.rstrip().split() for l in f))

print(df)

【问题讨论】:

  • 您可能想解释一下“SAS 中的@@ 选项”做了哪些Python 做不到的事情;我怀疑很多 Python 专家不熟悉 SAS 语法。
  • 谢谢你,mustaccio。 @@ 选项将允许一行数据包含多个条目。它使用输入(即列名)来了解包含多少观察值(例如,如果有 3 个输入和 9 条分隔数据,则有 3 个观察值)。
  • 可能只有我一个人,但这种解释并没有多大帮助。无论如何,您应该编辑您的问题并将其添加到那里,而不是在 cmets 中。
  • 您似乎正在寻找一种方法来生成 0-2 和 3-5 列的并集。

标签: python pandas sas


【解决方案1】:
pd.concat([df.iloc[:, :3], df.iloc[:, 3:]], axis=0, ignore_index=True)

【讨论】:

  • 谢谢,这种方法帮助我实现了目标! (我会投票,但缺少至少 15 个所需的声望)。
猜你喜欢
  • 1970-01-01
  • 2017-01-27
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
  • 2011-03-11
相关资源
最近更新 更多