很难了解大熊猫的所有技巧或使用数据帧。
所以我列出了一定数周的df。我想要创建一个度量表或数据框,其中添加了添加了连续递增周的其他列,只添加了行,将行填充到“周”列中的最大周列表
Week
0 201152
1 201201
2 201202
3 201203
4 201204
以下df是我想要的结果。
Week 2ndWeek 3rdWeek 4thWeek 5thWeek
0 201152 201201 201202 201203 201204
1 201201 201202 201203 201204
2 201202 201203 201204
3 201203 201204
4 201204
有什么想法吗?
答案 0 :(得分:0)
import pandas as pd
ts = df.Week
for week in range(len(ts) - 1):
ts = ts.drop(ts.idxmin())
ts.index = pd.Index(range(len(ts)))
ts.name = '%s_Week' % week
df = df.merge(pd.DataFrame(ts), left_index=True,right_index=True, how='outer')
答案 1 :(得分:0)
对于类似的内容,您可以使用shift
和循环。你可以提取一些索引技巧,但这不太可能成为瓶颈,所以我们也可能很简单。
>>> df = pd.DataFrame({"Week": [201152, 201201, 201202, 201203, 201204]})
>>> df
Week
0 201152
1 201201
2 201202
3 201203
4 201204
[5 rows x 1 columns]
>>> for n in range(2, len(df)+1):
... df["{}_Week".format(n)] = df["Week"].shift(-(n-1))
...
>>> df
Week 2_Week 3_Week 4_Week 5_Week
0 201152 201201 201202 201203 201204
1 201201 201202 201203 201204 NaN
2 201202 201203 201204 NaN NaN
3 201203 201204 NaN NaN NaN
4 201204 NaN NaN NaN NaN
[5 rows x 5 columns]
如果你真的想要''
而不是NaN
,你可以添加.fillna('')
,但即使它们看起来不那么好,算术也会更好用{{} 1}} s,因为它们被许多例程解释为缺失值。