Извлечение значений в одном столбце CSV на основе значения другого - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть файл .csv, из которого я извлекаю данные. Этот файл имеет четыре столбца, ['time', 'apple', 'banana', 'orange'].

. Для каждого из этих столбцов имеется 100 строк. Я хочу извлечь данные из столбца банана и вставить его в кадр данных, при условии, что значение в столбце времени не равно нулю. Примечание. Через время t значения в столбце времени возвращаются к нулю, и я не хочу извлекать эти строки.

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

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

Код, который я использую для извлечения бананового столбца:

for i, p in enumerate(df['path']):
    if re.match(r".*\.L.*", p):
        df = pd.read_csv(p, index_col=False, sep='\s+|\t+|\s+\t+|\t+\s+', comment='#', names=['time', 'apple', 'banana',  'orange',  'pear'], usecols=[1])
        df.iloc[i, 3:] = df['apple'].values

Это, однако, нене дайте имена столбцов, как я хочу, и извлекут все строки CSV, а не только строки с ненулевым значением времени.

1 Ответ

2 голосов
/ 30 сентября 2019

Скажем, у вас есть ваш фрейм данных с именем df. Вы можете выбрать конкретные строки, которые вам нравятся;

sub_df = df[['time', 'banana']][df['time'] > 0]

Где ['time', 'banana'] - это список строк в выбранном вами фрейме данных, а df['time'] > 0 - это фильтр, который будет использовать только те строки, где времябольше нуля.

Затем вы можете повернуть его так:

df_pivot = sub_df.pivot(columns='time', values='banana')

Здесь вы можете сделать столбцы своим временем и их значениями банановыми.

Вы также можете сделать это водна строка, как

df_pivot = df[['time', 'banana']][df['time'] > 0].pivot(columns='time', values='banana')

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...