我有一个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("', '") )