Python Pandas数据框,如何将新列集成到新的CSV中

时间:2018-09-03 03:37:48

标签: python-3.x pandas dataframe

伙计们,我需要在熊猫方面有所帮助,非常感谢您的投入。 我的原始文件如下所示: 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 :(得分:0)

IIUYC,您无需在此处分组。您可以使用新列简单地更新现有数据框,并指定需要使用to_csv方法将哪些列保存到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'])