DataFrame Python Pandas, как интегрировать новые столбцы в новый CSV - PullRequest
0 голосов
/ 03 сентября 2018

ребята, мне нужно немного помочь с Пандами и буду очень признателен за ваш вклад. Мой оригинальный файл выглядит так: Original file look

Я хотел бы преобразовать его, объединив несколько пар столбцов (сгенерировав их средние значения) и вернув новый файл, похожий на этот: The way I want it to look like

Также, если возможно, я бы также хотел разделить столбец RateDateTime на два столбца, один из которых содержит дату, а другой - только время. Как я должен это делать? Я попытался написать код, как показано ниже, но он не работает:

import pandas as pd
dateparse = lambda x: pd.datetime.strptime(x, '%Y/%m/%d %H:%M:%S')
df = pd.read_csv('data.csv', parse_dates=['RateDateTime'], index_col='RateDateTime',date_parser=dateparse)

a=pd.to_numeric(df['RateAsk_open'])
b=pd.to_numeric(df['RateAsk_high'])
c=pd.to_numeric(df['RateAsk_low'])
d=pd.to_numeric(df['RateAsk_close'])
e=pd.to_numeric(df['RateBid_open'])
f=pd.to_numeric(df['RateBid_high'])
g=pd.to_numeric(df['RateBid_low'])
h=pd.to_numeric(df['RateBid_close'])

df['Open'] = (a+e) /2
df['High'] = (b+f) /2
df['Low'] = (c+g) /2
df['Close'] = (d+h) /2

grouped = df.groupby('CurrencyPair')
Open=grouped['Open']
High=grouped['High']
Low=grouped['Low']
Close=grouped['Close']

w=pd.concat([Open, High,Low,Close], axis=1, keys=['Open', 'High','Low','Close'])
w.to_csv('w.csv')

Python возвращает:

TypeError: cannot concatenate object of type "<class 'pandas.core.groupby.groupby.SeriesGroupBy'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

Может кто-нибудь помочь мне, пожалуйста? Большое спасибо !!!

1 Ответ

0 голосов
/ 03 сентября 2018

IIUYC, вам не нужно группировать здесь. Вы можете просто обновить существующий информационный фрейм новыми столбцами и указать, какие столбцы нужно сохранить в CSV-файл в методе to_csv. Вот пример:

df['Open'] = df[['RateAsk_open', 'RateBid_open']].mean(axis=1)
df['RateDate'] = df['RateDateTime'].dt.date
df['RateTime'] = df['RateDateTime'].dt.time

df.to_csv('w.csv', columns=['CurrencyPair', 'Open', 'RateDate', 'RateTime'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...