Python 如何基于pandas中的多个列指定值?
是否有一种优雅的方法可以根据pandas中的数据帧中的多列分配值?假设我有一个数据框架,有两列:水果类型和颜色Python 如何基于pandas中的多个列指定值?,python,pandas,Python,Pandas,是否有一种优雅的方法可以根据pandas中的数据帧中的多列分配值?假设我有一个数据框架,有两列:水果类型和颜色 import pandas as pd df = pd.DataFrame({'FruitType':['apple', 'banana','kiwi','orange','loquat'], 'Color':['red_black','yellow','greenish_yellow', 'orangered','orangeyellow']}) 我想根据“水果类型”和“颜色”列分
import pandas as pd
df = pd.DataFrame({'FruitType':['apple', 'banana','kiwi','orange','loquat'],
'Color':['red_black','yellow','greenish_yellow', 'orangered','orangeyellow']})
我想根据“水果类型”和“颜色”列分配第三列的值“isYellowSeedless”
我有一份我认为无籽的水果的清单,想检查一下颜色柱,看看它是否含有“黄色”。
我该如何优雅地把这些串在一起
这是我没有成功的尝试:
df[(df['FruitType'].isin(seedless)) & (culture_table['Color'].str.contains("yellow"))]['isYellowSeedless'] = True
与遮罩一起使用
:
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
如果需要True
和False
输出:
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
,请使用:
对于转换为0
和1
:
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
与遮罩一起使用
:
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
如果需要True
和False
输出:
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
,请使用:
对于转换为0
和1
:
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
或者你可以试试
df['isYellowSeedless']=df.loc[df.FruitType.isin(seedless),'Color'].str.contains('yellow')
df
Out[546]:
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
或者你可以试试
df['isYellowSeedless']=df.loc[df.FruitType.isin(seedless),'Color'].str.contains('yellow')
df
Out[546]:
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
非常好的解决方案。非常感谢。非常好的解决方案。非常感谢。我也很喜欢这个。不知道他们会那样被锁在一起!谢谢@它们是通过索引连接起来的。Yw:-)我也很喜欢这个。不知道他们会那样被锁在一起!谢谢@它们是通过索引连接起来的。Yw:-)