gpt4 book ai didi

python - 如何根据 Pandas 中的多列赋值?

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:15 24 4
gpt4 key购买 nike

有没有一种优雅的方法可以根据 pandas 数据框中的多列赋值?假设我有一个包含 2 列的数据框:FruitType 和 Color。

import pandas as pd
df = pd.DataFrame({'FruitType':['apple', 'banana','kiwi','orange','loquat'],
'Color':['red_black','yellow','greenish_yellow', 'orangered','orangeyellow']})

我想根据“FruitType”和“Color”列分配第三列“isYellowSeedless”的值。

我有一个我认为无籽的水果列表,我想检查“颜色”列以查看它是否包含字符串“黄色”。

seedless = ['banana', 'loquat']

如何优雅地将它们串在一起?

这是我的尝试,但没有成功:

df[(df['FruitType'].isin(seedless)) & (culture_table['Color'].str.contains("yellow"))]['isYellowSeedless'] = True

最佳答案

使用loc使用掩码:

m = (df['FruitType'].isin(seedless)) & (df['Color'].str.contains("yellow"))

df.loc[m, 'isYellowSeedless'] = True
print (df)
Color FruitType isYellowSeedless
0 red_black apple NaN
1 yellow banana True
2 greenish_yellow kiwi NaN
3 orangered orange NaN
4 orangeyellow loquat True

如果需要TrueFalse输出:

df['isYellowSeedless'] = m
print (df)
Color FruitType isYellowSeedless
0 red_black apple False
1 yellow banana True
2 greenish_yellow kiwi False
3 orangered orange False
4 orangeyellow loquat True

对于 if-else 一些标量使用 numpy.where :

df['isYellowSeedless'] = np.where(m, 'a', 'b')
print (df)
Color FruitType isYellowSeedless
0 red_black apple b
1 yellow banana a
2 greenish_yellow kiwi b
3 orangered orange b
4 orangeyellow loquat a

并转换为 01:

df['isYellowSeedless'] = m.astype(int)
print (df)
Color FruitType isYellowSeedless
0 red_black apple 0
1 yellow banana 1
2 greenish_yellow kiwi 0
3 orangered orange 0
4 orangeyellow loquat 1

关于python - 如何根据 Pandas 中的多列赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com