我有一个问题,我不能使用'.loc'分配多个列。
我想只用一行。
示例
DataFrame输入:
NAME AGE NEW_AGE COUNTRY NEW_COUNTRY _merge
0 LUCAS 80.0 NaN BRAZIL NaN left_only
1 STEVE NaN 35.0 NaN USA both
2 BEN NaN 25.0 CANADA both
DataFrame输出:
NAME AGE NEW_AGE COUNTRY NEW_COUNTRY _merge
0 LUCAS 80.0 NaN BRAZIL NaN left_only
1 STEVE 35.0 35.0 USA USA both
2 BEN 25.0 25.0 CANADA CANADA both
代码
import pandas as pd
people = pd.DataFrame(
{'NAME': ['LUCAS', 'STEVE', 'BEN'],
'AGE': [80, pd.np.nan, pd.np.nan],
'NEW_AGE': [pd.np.nan, 35, 25],
'COUNTRY': ['BRAZIL', pd.np.nan, ''],
'NEW_COUNTRY': [pd.np.nan, 'USA', 'CANADA'],
'_merge': ['left_only', 'both', 'both']
})
people.loc[people['_merge'] == 'both', 'AGE'] = people['NEW_AGE']
people.loc[people['_merge'] == 'both', 'COUNTRY'] = people['NEW_COUNTRY']
我尝试过这种方法,但是失败了。
# USING ONLY ONE DOESNT WORK
people.loc[people['_merge'] == 'both', ['AGE', 'COUNTRY']] = \
people[['NEW_AGE', 'NEW_COUNTRY']]
# USING TO_NUMPY CAUSE OF http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
people.loc[people['_merge'] == 'both', ['AGE', 'COUNTRY']] = \
people[['NEW_AGE', 'NEW_COUNTRY']].to_numpy()
有人知道如何使用一个命令分配多个列吗?
熊猫: 0.24.1
谢谢。
答案 0 :(得分:1)
对带有lambda函数的相同列名使用HttpResponse
:
rename