2016-05-27 2 views
0

Я успешно создал функции в python и чтения/записи файлов. Тем не менее, мне действительно нужно применить определенные функции к целым строкам данных (не столбцов) и не может ничего узнать о том, как это сделать. Цели:Как применить математические операции к строке csv в python?

  • Чтение CSV или текстовый файл в Python (может-делать)
  • Найти строку данных и применить определенные условия и операции
  • Проделайте то же самое со второй строкой данных
  • Затем сравните результаты из рядов друг с другом (сделано с помощью функции подобия)
  • печати результирующих данных в отдельный файл (легко Peasy)

F параметры включения включают «если/тогда» условия для отношений, сумм и квадратных корней - не будут включать целую функцию. Например, просто использовать сумму

Вот что я до сих пор (не много ...):

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 

ответ

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>0 и c>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 инструктирует Пандас/Numpy использовать строки вместо столбцов

Смежные вопросы