将系列分配给Pandas DataFrame的多个行

Nra*_*ras 2 python pandas

我有一个用索引和列编写的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'
Run Code Online (Sandbox Code Playgroud)

天真的方法是

df.loc[index, :] = s
Run Code Online (Sandbox Code Playgroud)

但这根本不会改变DataFrame.它仍然是

    C1   C2
A  NaN  NaN
B  NaN  NaN
C  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

如何完成这项任务?

Div*_*kar 7

看来我们可以使用底层数组数据来分配 -

df.loc[index, :] = s.values
Run Code Online (Sandbox Code Playgroud)

现在,这假设index in的顺序s与列的顺序相同df.如果不是这样,suggested by @Nras我们可以s[df.columns].values用于右侧分配.