|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想让列1的d和e依然保持原有的数据4和5,这个应该如何修改呢?
目前结果是给置成null了
- import pandas as pd
- # 创建df1
- data1 = {'列1': ['a', 'b', 'c', 'd', 'e'],
- '列2': [1, 2, 3, 4, 5]}
- df1 = pd.DataFrame(data1)
- # 创建df2
- data2 = {'code': ['a', 'b', 'c'],
- 'num': [10, 20, 30]}
- df2 = pd.DataFrame(data2)
- print(df1)
- print('--------')
- print(df2)
- print('-------------')
- df1['列2'] = df1['列1'].map(df2.set_index('code')['num'])
- print(df1)
复制代码
你的代码将df1的'列2'完全替换为df1的'列1'在df2中的对应值。对于df1的'列1'中的'd'和'e',因为在df2中找不到对应的值,所以被替换为null。
如果你想保持'd'和'e'在'列2'中的原始值,你可以使用Pandas的 update函数,而不是直接替换。 update函数只会更新找到的值,对于找不到的值,会保持原始值不变。以下是修改后的代码:
- import pandas as pd
- # 创建df1
- data1 = {'列1': ['a', 'b', 'c', 'd', 'e'], '列2': [1, 2, 3, 4, 5]}
- df1 = pd.DataFrame(data1)
- # 创建df2
- data2 = {'code': ['a', 'b', 'c'], 'num': [10, 20, 30]}
- df2 = pd.DataFrame(data2)
- # 创建一个新的Series,将df1的'列1'映射到df2的'num'
- s = df1['列1'].map(df2.set_index('code')['num'])
- # 使用update函数更新df1的'列2'
- df1['列2'].update(s)
- print(df1)
复制代码
这样,'列2'中的'd'和'e'的值就会保持为4和5,而不会被替换为null。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
|
|