我有一个用索引和列准备的 pandas DataFrame,所有值都是 NaN。
现在我计算了一个结果,该结果可用于 DataFrame 的多行,并且我想一次将它们全部分配。这可以通过循环来完成,但我很确定这个分配可以一次完成。
这是一个场景:
import pandas as pd
df = pd.DataFrame(index=['A', 'B', 'C'], columns=['C1', 'C2']) # original df
s = pd.Series({'C1': 1, 'C2': 'ham'}) # a computed result
index = pd.Index(['A', 'C']) # result is valid for rows 'A' and 'C'
天真的方法是
df.loc[index, :] = s
但这根本不会改变 DataFrame。它仍然是
C1 C2
A NaN NaN
B NaN NaN
C NaN NaN
怎样才能完成这个任务呢?
看来我们可以使用底层数组数据来赋值 -
df.loc[index, :] = s.values
现在,假设索引的顺序s
与以下列中的相同df
。如果不是这样的话,就像suggested by @Nras https://stackoverflow.com/questions/44806006/assign-a-series-to-several-rows-of-a-pandas-dataframe/44806099#comment76592260_44806099,我们可以使用s[df.columns].values
用于右侧分配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)