分配Pandas.DataFrame带Defau系列的列

2024-09-27 23:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个DataFrame

df = pandas.DataFrame({'a': [1,2], 'b': [3,4]}, ['foo', 'bar'])

     a  b
foo  1  3
bar  2  4

我想添加一个基于另一个Series的列:

^{pr2}$

如果DataFrame索引值不在序列索引中,如何将序列分配给DataFrame的列并提供默认值?

我在找某种形式的东西:

df['c'] = s.withDefault(42)

这将导致以下数据帧:

     a b c 
foo  1 3 10
bar  2 4 42

#Note: bar got value 42 because it's not in s

提前感谢您的考虑和回应。在


Tags: 数据dataframepandasdffoovaluebar序列
2条回答

您需要在df和从s获得的dataframe之间使用join,然后用默认值填充NaN,在您的例子中是42。在

df['c'] = df.join(pandas.DataFrame(s, columns=['c']))['c'].fillna(42).astype(int)

输出:

^{pr2}$

mapget一起使用

get有一个可用于指定默认值的参数。在

df.assign(c=df.index.map(lambda x: s.get(x, 42)))

     a  b   c
foo  1  3  10
bar  2  4  42

reindexfill_value一起使用

^{pr2}$

相关问题 更多 >

    热门问题