簡體   English   中英

如何將數學運算應用於python中的csv行?

[英]How to apply math operations to a row of a csv in python?

我已經成功地在python中創建函數並讀取/寫入文件。 但是,我確實需要將某些函數應用於整個數據而不是column ),並且找不到有關如何執行此操作的任何信息。 目標是:

  • 將csv或txt文件讀入python(可以)
  • 查找一行數據並應用某些條件和操作
  • 對第二行數據執行相同操作
  • 然后將行中的結果相互比較(使用相似度函數完成)
  • 將結果數據打印到一個單獨的文件中(easy peasy)

函數參數包括比率,總和和平方根的“ if / then”條件-不包括整個函數。 例如,只使用sum

這是我到目前為止(不多...):

import numpy as np
data = np.genfromtxt ('file_to_read.csv', 
                       dtype=float,
                       delimiter=",",
                       names=True)
np.sum()
print(data)
np.savetxt('test.csv', data, delimiter=',')

file_to_read.csv是這樣的:

0,2,1
0,2,2
0,2,3
0,1,0
0,2,0
0,3,0
1,0,0
2,0,0
3,0,0

您可以轉置矩陣或數據框(如果使用熊貓)並處理列。

示例(熊貓):

原始DF

In [162]: df
Out[162]:
   a  b  c
0  0  2  1
1  0  2  2
2  0  2  3
3  0  1  0
4  0  2  0
5  0  3  0
6  1  0  0
7  2  0  0
8  3  0  0

轉置DF

In [163]: df.T
Out[163]:
   0  1  2  3  4  5  6  7  8
a  0  0  0  0  0  0  1  2  3
b  2  2  2  1  2  3  0  0  0
c  1  2  3  0  0  0  0  0  0

選擇b>0c>1

In [166]: df[(df.b>0) & (df.c>1)]
Out[166]:
   a  b  c
1  0  2  2
2  0  2  3

現在為找到的每一行計算單元格總和:

In [167]: df[(df.b>0) & (df.c>1)].sum(axis=1)
Out[167]:
1    4
2    5
dtype: int64

或產品:

In [169]: df[(df.b>0) & (df.c>1)].product(axis=1)
Out[169]:
1    0
2    0
dtype: int64

使用axis=1 PS指示Pandas / Numpy使用行而不是列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM