所以说我有一堆这样的数据:
10-12-2014 3.45
10-12-2014 3.67
10-12-2014 4.0
10-12-2014 5.0
10-13-2014 6.0
10-13-2014 8.9
等等。
我希望以这种格式将这些内容放入Pandas数据框中:
10-12-2014 3.45 3.57 4.0 5.0
10-13-2014 6.0 8.9 etc etc
为了做到这一点,目前我只有这样的事情:
rows = cursor.fetchall()
df = pd.DataFrame(columns('Date', Val1', 'Val2', 'Val3', 'Val4'))
previous_date = 0
for row in rows:
if previous_date == 0:
df.
这就是我被困的地方 - 我似乎无法找到一种只为该列添加日期和其中一个值的方法。我也不确定如何在将来的迭代中更新旧列,因为我真的只能找到只添加整行的人的例子。或者有更好的方法吗?
答案 0 :(得分:1)
使用字符串进入该格式,您可以执行以下操作。
1)获取数据为df
d = """10-12-2014 3.45
10-12-2014 3.67
10-12-2014 4.0
10-12-2014 5.0
10-13-2014 6.0
10-13-2014 8.9"""
df = pd.read_csv(StringIO.StringIO(d),sep="\s",names=['Date','v'])
2)将其分组并应用函数来索引您的值。
groups = df.groupby('Date')
df = groups.apply(lambda x: x['v'].reset_index(drop=True))
#line below is equivalent to above but clunkier use if you really want the ValX as columns
#df = groups.apply(lambda x: pd.Series({"Val{0}".format(1+i):each for i,each in enumerate(x['v'])}))
3)重置索引:使用unstack将值索引转换为列并重置索引以将日期重置为列...
df = df.unstack(level=1)
df = df.reset_index()
编辑速度,如果您不关心命名列
groups = df.groupby('Date').indices
df = pd.DataFrame(data= groups.values(),index=groups.keys()).reset_index()
<强>输出强>
Date Val1 Val2 Val3 Val4
0 10-12-2014 3.45 3.67 4 5
1 10-13-2014 6.00 8.90 NaN NaN