【发布时间】:2019-07-29 12:48:59
【问题描述】:
我想创建一个包含 df1 中“atoms”列的值的数据框,以便生成的数据框看起来像 df2。
df1:
name atoms
0 CH4 C
1 CH4 H
2 CH4 H
3 CH4 H
4 CH4 H
5 NH3 N
6 NH3 H
7 NH3 H
8 NH3 H
df2:
name a0 a1 a2 a3 a4
0 CH4 C H H H H
1 CH4 C H H H H
2 CH4 C H H H H
3 CH4 C H H H H
4 CH4 C H H H H
5 NH3 N H H H NaN
6 NH3 N H H H NaN
7 NH3 N H H H NaN
8 NH3 N H H H NaN
有没有办法使用 Pandas 实现这一目标? 我为此使用了 groupby,如下所示:
df2 = pd.DataFrame(columns=['name','a0','a1','a2','a3','a4'], index=np.arange(9))
c = df1.groupby('name')
df2['name'] = df1['name']
for mol in df1.name.unique():
df2.iloc[c.indices[mol],np.arange(1,len(c.indices[mol]) +1)] = c.get_group(mol)['atoms'].values
但我觉得应该有一种更简单、更快捷的方法来做到这一点。
【问题讨论】:
-
@Akaisteph7 这个问题足够具体,足以成为 Stack Overflow 上的话题。 Code Review 更喜欢有更多上下文的问题。请看A Guide to Code Review for SO users