Получить каждый n-й элемент нескольких фреймов данных в пандах - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 10 фреймов данных с идентичной структурой, все из которых содержат 10000 записей.Я хочу создать матрицу, содержащую каждую 1000-ю запись всех различных фреймов данных.

Итак, мой набор данных выглядит следующим образом:

df = pd.read_csv('10000_0.csv')
df1 = pd.read_csv('10000_1.csv')
df2 = pd.read_csv('10000_2.csv')
df3 = pd.read_csv('10000_3.csv')
df4 = pd.read_csv('10000_4.csv')
df5 = pd.read_csv('10000_5.csv')
df6 = pd.read_csv('10000_6.csv')
df7 = pd.read_csv('10000_7.csv')
df8 = pd.read_csv('10000_8.csv')
df9 = pd.read_csv('10000_9.csv')

Теперь я хочу создать массив, где [] первыйэлементы - это список [df['name'][1000], df1['name'][1000], ..., df9['name'][1000]], возможно ли эффективно построить это в пандах?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы можете использовать Панды Хвост :

arr = []

fnames = ['10000_0.csv',...]

for fname in fnames:
    arr.append(pd.read_csv(fname).tail(1)['name'].values[0])
0 голосов
/ 08 июня 2018

Использование:

files = ['10000_{}.csv'.format(x) for x in range(10)]

#list of all DataFrames
dfs = [pd.read_csv(f) for f in files]

#list of one row DataFrame 
L = [x.iloc[[1000]] for x in dfs]
#list of Series
L = [x.iloc[1000] for x in dfs]

#final DataFrame
df1 = pd.concat(L, ignore_index=True)

Другое решение, если нужен только один ряд:

files = ['10000_{}.csv'.format(x) for x in range(10)]

#list of all DataFrames
dfs = [pd.read_csv(f, skiprows=(1, 1000), nrows=1) for f in files]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...