проблема при создании фрейма данных путем передачи списка - PullRequest
0 голосов
/ 09 марта 2019

после нескольких манипуляций с данными я получил 2 списка avglist и sumlist и теперь я передал этот список 2 своим result_df

result_df = pd.DataFrame({"File Name": filelist ,"Average":avglist,"Sum":sumlist})
print(result_df)

ниже приведен мой результат вывода, но проблема здесь в

1) даже в моем заголовке Continental AG, информация о типе данных также включает в себя ..

я просто мои значения "874" и 584 вНеобходимая сумма ..

enter image description here

-i пробовал avglist.value (), но .value не является функцией списка

также пробовалмало изменений в .index, но не получен ожидаемый результат ..

я пропускаю какие-либо шаги здесь?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Иногда я выполнял несколько операций, как показано ниже ...

while i < len(filepath):
  .....
  df['Date']=df['Time'].apply(lambda i:i.split('T')[0])
  .......
  .......
  sum1=sum_df.sum(axis=0)
  avg1=Avg_df.sum(axis=0)
  .......
  .......
  avglist.append(avg1)
  sumlist.append(sum1)
  .....
  i+=1

, поэтому я изменил все мои операции на ниже.

 df['Date']=df.iloc[:,0].apply(lambda i:i.split('T')[0])
 .........
 .........

 sum1=sum_df.iloc[:,0].sum()
 avg1=Avg_df.iloc[:,0].mean()
 .....
 .....
 avglist.append(avg1)
 sumlist.append(sum1)

вместо использования имени столбца, ось в моей операции.

Я обновил до dataframe.iloc во всех моих операциях, и он начал давать мне правильный результат ..

enter image description here

все еще не уверен в точной причине, но эти изменения работали для меня ..

0 голосов
/ 10 марта 2019

Что-то не так с тем, как вы импортируете свои файлы. Если вы возьмете .sum() вашего фрейма данных, он вернет вам сумму столбцов. Я подозреваю, что вы, возможно, делаете это, поскольку вы суммируете фрейм данных. Затем, когда вы пытаетесь поместить список в другой фрейм данных, он выглядит странно.

позволяет взять следующие два кадра данных:

df = pd.DataFrame({'a':[1, 20, 30, 4, 0],
              'b':[1, 0, 3, 4, 0],
              'c':[1, 3, 7, 7, 5],
              'd':[1, 8, 3, 8, 5],
              'e':[1, 11, 3, 4, 0]})

df2 = pd.DataFrame({'a':[1, 20, 100, 4, 0],
              'b':[1, 0, 39, 49, 10],
              'c':[1, 3, 97, 7, 95],
              'd':[441, 38, 23, 8, 115],
              'e':[1, 11, 13, 114, 0]})

глядя на сумму одного из этих фреймов данных:

df.sum()
a    55
b     8
c    23
d    25
e    19
dtype: int64

Теперь, если мы возьмем суммы данных и поместим их в список:

sums = [x.sum() for x in [df, df2]]

когда мы проверяем это, мы получаем:

[a    55
 b     8
 c    23
 d    25
 e    19
 dtype: int64, a    125
 b     99
 c    203
 d    625
 e    139
 dtype: int64]

если вы хотите получить сумму всего кадра данных , а не только по столбцам, вы можете использовать .sum().sum(), который сначала будет суммировать по столбцам, а затем суммировать эти столбцы

df.sum().sum()
130

, поэтому на всех фреймах данных это будет:

sums = [x.sum().sum() for x in [df, df2]]

выполнение среднего значения будет зависеть от того, каковы ваши csvs. если бы вы сделали .mean().mean(), это могло бы сильно отличаться от того, что вы ищете. Если бы это только 1 столбец каждый раз, это было бы хорошо. но если бы оно было больше, то было бы взято среднее значение из 5 столбцов, а затем взято среднее значение этого значения (эти 5 средних значений, разделенные на 5).

наконец, похоже, что "Continental AG (Worldwide)" - это название вашей колонки.

Так что в вашем цикле for вы должны делать:

sums = [df['Continental AG (Worldwide)'.sum() for df in list_dfs]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...