【问题标题】:Formating of csv data with python data frames使用 python 数据框格式化 csv 数据
【发布时间】:2018-09-13 07:01:05
【问题描述】:

我有一些我想重新格式化的 csv 数据

我想更改此格式,将 Data1-4 作为列名,将 Value 1-4 作为数据 A 和 B 之外的值

我有数百万行,我不想循环它。我正在使用 python 数据框。

请建议最好的方法,因为循环数百万次循环将花费大量时间,我希望以性能方面的最佳方式完成任务。

我正在尝试做的更多示例数据:

【问题讨论】:

  • 您能否稍微编辑一下您的帖子并重新解释您当前的格式/预期格式。很难看出区别。
  • 抱歉之前提供的格式。更新了当前和预期的格式。

标签: python excel python-3.x pandas


【解决方案1】:

如果输入是Series 3 级MultiIndex 使用Series.unstack

print (type(s))
<class 'pandas.core.series.Series'>
print (s.index.nlevels)
3

df = s.unstack(fill_value=0)

或者如果输入是 4 列 DataFrame 首先通过前向填充替换前 2 列中的缺失值,然后通过 DataFrame.set_indexSeries.unstack 重塑:

print (type(df))
<class 'pandas.core.frame.DataFrame'>
print (len(df.columns))
4

df.columns = ['Col1','Col2','Col3','Col4']
cols = ['Col1','Col2']
df[cols] = df[cols].ffill()
df = df.set_index(['Col1','Col2','Col3'])['Col4'].unstack(fill_value=0)

【讨论】:

  • 上面的代码给了我一些想法,但没有给出想要的输出。我需要转置当前格式的第 3 列和第 4 列,这将为我拥有的每个数据添加一个单独的列。在我上面的例子中,我给出了 4 列的输入,我想在其中转置最后两列。因为我有 4 行数据,所以我的预期格式将有 2+4 列。如果数据数量增加,这将有所不同。
  • @Vaybhava - 数据是否保密?如果没有,可以分享df.to_pickle('data.pkl') 吗?
  • 添加了一些可能有用的屏幕截图。我将其创建为示例数据,因为我拥有的数据是高度机密的。
  • @Vaybhava - 好的,是否可以将保存在data.pkl 中的样本非机密样本数据发送到我的电子邮件或发送到保管箱或 gdocs 的链接?
  • @Vaybhava - 还有coupon 没有价值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 2016-01-14
  • 2021-09-18
  • 2012-06-07
相关资源
最近更新 更多