gpt4 book ai didi

python - 用来自不同数据帧的数据有条件地填充 pandas 列

转载 作者:行者123 更新时间:2023-12-01 02:51:43 25 4
gpt4 key购买 nike

我有一个数据框 (df1),其中有一列“单位”,其中填充了空白 nan 值或字符串。

df1

id s_type s_name s_unit
1 t1 n1 m2
2 t1 n5 m2
3 t2 n2 NaN
4 t6 n3 each

我有第二个数据帧 (df2),它具有类似的信息,但没有 id。

df2

type name unit
t3 n4 cm2
t4 n2 m3
t2 n2 kg
t6 n0 Nan

我正在努力开发一个表达式来

  1. 识别 df1 中单位为 null 的行并且
  2. 将 df2 中的单位值插入到 df1 WHERE 的单位列中
  3. df1['type'] 匹配 df2['type'] 并且 df1['name'] 匹配 df2['name']

在上面的框架中,表达式将使用值“kg”填充 df1 的“unit”列,因为“type”和“name”都匹配。

类似于:

df1.loc[df1['unit'].isnull(), 'unit'] = df2['unit'].where(
(df1['name'] == df2['name']) &
(df1['type'] == df2['type']))

虽然上面的行产生了“ValueError:只能比较相同标签的系列对象。”

我已经查看了文档和其他问题。我不知所措。任何帮助将不胜感激。

最佳答案

您可以使用mergeleft join 然后 combine_firstfillna :

df = pd.merge(df1, df2, on=['type','name'], how='left')

df1['unit'] = df1['unit'].combine_first(df['unit_y'])
print (df1)
id type name unit
0 1 t1 n1 m2
1 2 t1 n5 m2
2 3 t2 n2 kg
3 4 t6 n3 each
<小时/>
df1['unit'] = df1['unit'].fillna(df['unit_y'])
print (df1)
id type name unit
0 1 t1 n1 m2
1 2 t1 n5 m2
2 3 t2 n2 kg
3 4 t6 n3 each

关于python - 用来自不同数据帧的数据有条件地填充 pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691432/

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