修改数据框中的新列

问题描述 投票:0回答:1

我在修改新列时遇到问题。

import pandas as pd
import numpy as np

da=np.array([[[1,2], 1,2,100],[[1,2], 1,3,100],[[1,2], 4,1,100], [[1,2], 5,6,101], [[1,2], 7,9,102], [[1,2], 8,7,102]])

col = ['N', 'NRW', 'NRW_1', 'NRW_2']

ramka = pd.DataFrame(columns = col, data = da)
print (ramka)

ramka['TEST'] = ramka['NRW'].apply(lambda x: x+3)
print (ramka)

这里还可以。我得到一个 NRW+3 的新列。 NRW 不变。

ramka['TEST2'] = ramka['N'].apply(lambda x: x.append(555))
print (ramka)

这里我得到了没有的新专栏。 N 列已更改。为什么?

如果我复制 N 列

ramka['TEST4'] = ramka['N']

并对新列执行相同的操作,更改将应用于 N 列和 TEST4

ramka['TEST4'].apply(lambda x: x.append(666))
print (ramka)

我不明白。请帮忙。

python pandas dataframe
1个回答
0
投票

list.append
已就位(因此返回
None
),您应该使用:

ramka['TEST2'] = ramka['N'].apply(lambda x: x+[555])

请注意,要将标量添加到数字列,您不应使用

apply
,而是:

ramka['TEST'] = ramka['NRW']+3

输出:

        N  NRW  NRW_1  NRW_2  TEST        TEST2
0  [1, 2]    1      2    100     4  [1, 2, 555]
1  [1, 2]    1      3    100     4  [1, 2, 555]
2  [1, 2]    4      1    100     7  [1, 2, 555]
3  [1, 2]    5      6    101     8  [1, 2, 555]
4  [1, 2]    7      9    102    10  [1, 2, 555]
5  [1, 2]    8      7    102    11  [1, 2, 555]
© www.soinside.com 2019 - 2024. All rights reserved.