包含列表的Pandas列-遍历每个列表问题

时间:2020-04-04 22:06:40

标签: python pandas dataframe

假设我有一个数据框,例如

df = pd.DataFrame({'a': [1,2,3], 'b': [['this', 'is', 'a', 'sentence'],['we', 'like', 'pizza'],['hello', 'world']]})

我想遍历b列中的列表,并进行诸如大写每个字母的操作。我可以做类似的事情

for row in df['b']:
    row = [i.upper() for i in row]
    print(row)
# ['THIS', 'IS', 'A', 'SENTENCE']
# ['WE', 'LIKE', 'PIZZA']
# ['HELLO', 'WORLD']

,但不会替换该列中的列表。我以为我是在for循环中重新分配行值,但是很显然,在此之后打印数据框时我不是:

print(df)
#    a                        b
# 0  1  [this, is, a, sentence]
# 1  2        [we, like, pizza]
# 2  3           [hello, world]

执行此操作的正确方法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用pandas.DataFrame.apply

 df['b'] =  df['b'].apply(lambda x: list(map(str.upper, x)))
 df

输出:

enter image description here

答案 1 :(得分:1)

我不知道这样做是否正确,但是df.b = df.b.apply(lambda x: [i.upper() for i in x])应该可以工作。