将一系列字符串转换为数组并替换值



我有一个pandas.core.series.series,如下所示。当使用type((时,我看到每一行都是一个str。我想把这一系列的字符串转换成一系列的数组。主要目标是能够根据不同的条件替换这些值。

示例数据集:(但我的真实数据集有更多的列和更多的行(

0   ['5 apples', '2 pears']
1   ['3 apples', '3 pears', '1 pumpkin']
2   ['4 blueberries']
3   ['5 kiwis']
4   ['1 pumpkin']
...  ...

然后,例如,如果一个数组具有值"0";1个南瓜";,我想用";XXXX";。这个panda基于其他列的值创建新列/应用多列的函数,逐行转换奇异值很有帮助,但我还无法替换序列/列表/数组中的值。

期望输出:

0   ['5 apples', '2 pears']
1   ['3 apples', '3 pears', 'XXX']
2   ['4 blueberries']
3   ['5 kiwis']
4   ['XXX']
...  ...

不确定我是否正确理解了这个问题,这就是你想要的:

import pandas as pd
x = pd.Series([['5 apples', '2 pears'],
['3 apples', '3 pears', '1 pumpkin'],
['4 blueberries'],
['5 kiwis'],
['1 pumpkin']])
['XXX' if '1 pumpkin' in l else l for l in x]
[['5 apples', '2 pears'], 'XXX', ['4 blueberries'], ['5 kiwis'], 'XXX']

如果您的x系列有str,请将每个str转换为列表:

pd.Series([s.strip("']['").split("', '") for s in x])

您可以使用Series.to_numpy()将pandas.core.series.series转换为Numpy Array。

具有数据帧df和列a_column

df[a_column]=df[a_column].apply(lambda x: [i.replace("1 pumpkin","XXXX") for i in x.strip("['']").split("', '")])

假设s是您的系列:

s.apply( lambda x: x.strip("'[]").split("', '") )

最新更新