csv Pandas:如何仅从某些列创建新的数据框?

zbdgwd5y  于 2023-09-27  发布在  其他
关注(0)|答案(3)|浏览(72)

我有一个包含测量值的csv文件,我想创建一个包含每小时平均值和标准差的新csv文件。但仅适用于某些列。
范例:
csv1:

YY-MO-DD HH-MI-SS_SSS    |     Acceleration  |        Lumx     |    Pressure
2015-12-07 20:51:06:608  |        22.7       |        32.3     |     10
2015-12-07 20:51:07:609  |        22.5       |        47.7     |     15

至csv 2(仅适用于压力和加速度):

YY-MO-DD HH-MI-SS_SSS       | Acceleration avg  |   Pressure avg
    2015-12-07 20:00:00:000  |        22.6       |        12.5     
    2015-12-07 21:00:00:000  |        ....       |        ....

现在我知道如何计算平均值了,但是在创建包含几列计算的较小dataframe时遇到了问题。我怎么能这么做呢?

yks3o0rb

yks3o0rb1#

你可以创建一个更小的DataFrame,如下所示:

csv2 = csv1[['Acceleration', 'Pressure']].copy()

然后可以处理csv2,它只包含所需的列。(你说你有一个关于avg计算的想法。
仅供参考,如果您确定查看与复制的关系,则可以省略.copy()

s2j5cfk0

s2j5cfk02#

csv2 = csv1.loc[:, ['Acceleration', 'Pressure']]
  • .loc[]有助于保持子集化操作的明确性和一致性。
  • .loc[]总是返回一个副本,因此原始 Dataframe 永远不会被修改。

(for关于不同view vs. copy替代方案的进一步讨论和优秀示例,请参阅:Pandas: Knowing when an operation affects the original dataframe

9jyewag0

9jyewag03#

你的平均方法可以代替**“method_to_obtain_avg”**,然后你可以得到一个子集,如下所示:

csv2 = csv1.method_to_obtain_avg()[["Accelaration", "Pressure"]]

相关问题