Как обновить много кадров данных панд в цикле - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю со многими фреймами данных, и мне нужно обновить все их одинаково.Я думаю, что было бы проще сделать это в цикле, а не писать уникальную строку для каждого изменения.Но мне не удается обновить фреймы данных.

Вот что я пробовал (но не работает)

pd1=pd.read_csv('data1.csv')
pd2=pd.read_csv('data2.csv')

samples = [pd1,pd2]

for i, df in enumerate(samples):
    samples[i] = samples[i].truncate(after=99, axis="rows")

Любые идеи, как обновить изменения или выполнить итерациюдатафреймы правильно?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Предполагая 2 dfs как:

print(df1)
   col1  col2 col3 col4
0     1     2    A    S
1     3     4    A    P
2     5     6    B    R
3     7     8    B    B

print(df2)
   col5  col6 col3
0     9    10    A
1    11    12    R

, вы можете обновить и сохранить в словаре как:

samples  = [df1,df2]
frames={}
for e,i in enumerate(samples):
    frames.update([('df'+str(e+1), i.truncate(after=2, axis="rows"))])

print(frames)

{'df1':    col1  col2 col3 col4
0     1     2    A    S
1     3     4    A    P
2     5     6    B    R, 'df2':    col5  col6 col3
0     9    10    A
1    11    12    R}

Теперь просто вызовите ключ, чтобы получить ваш фрейм данных:

print(frames['df1'])

   col1  col2 col3 col4
0     1     2    A    S
1     3     4    A    P
2     5     6    B    R
0 голосов
/ 20 февраля 2019

Это перезапишет ваши файлы, поэтому, если вы хотите сохранить оригинал, вам нужно сохранить его под другим именем, например:

pd.read_csv(file, nrows=100).to_csv('trunc_'+ file, index=False)

Но вы можете выполнить итерацию:

import pandas as pd

filenames = ['data1.csv','data2.csv']

for file in filenames:
    pd.read_csv(file, nrows=100).to_csv(file, index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...