【发布时间】:2017-11-25 06:18:31
【问题描述】:
我有一个数据框 (df1),其中有一列“units”,填充了空白的 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
我正在努力开发一种表达方式
- 识别 df1 中单位为空 AND 的行
- 将 df2 中的单位值插入到 df1 WHERE 的单位列中
- df1['type'] 匹配 df2['type'] AND 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: Can only compare the same-labeled Series objects。”
我查看了文档和其他 SO 问题。我不知所措。任何帮助将不胜感激。
【问题讨论】: