python - Pandas Dataframe:如何用列中的值之一填充对象类型?
问题描述
例如,我有一个 df。
data = {'product': ['coca', np.nan, 'pepsi', 'pepsi', 'orange',],
'price': [25, 94, 57, 62, 70,],
'company':[np.nan,'coca-cola',np.nan,np.nan,np.nan,]}
df = pd.DataFrame(data)
出去:
company price product
0 NaN 25 coca
1 coca-cola 94 NaN
2 NaN 57 pepsi
3 NaN 62 pepsi
4 NaN 70 orange
我想用相应列中的值填充对象类型。
预期输出:</p>
df
company price product
0 coca-cola 25 coca
1 coca-cola 94 coca
2 coca-cola 57 pepsi
3 coca-cola 62 pepsi
4 coca-cola 70 orange
我尝试如下。
for col in df:
#get dtype for column
dt = df[col].dtype
#check if it is a number
if dt == int or dt == float:
pass
else:
df[col].fillna(df[col][0])
但df[col][0]
也许楠,所以我应该填写一个不是的值nan
。那么该怎么做呢?
解决方案
试试这个:
for i in range(0,df.company.count()):
if((df.company[i].isnull()==True)&(df.product[i].isnull()==False))
df.company[i]=df.product[i]
if((df.company[i].isnull()==False)&(df.product[i].isnull()==True))
df.product[i]=df.company[i]
或者你可以试试这个:
df['product'] = df['product'].fillna(df['company'])
df['company'] = df['company'].fillna(df['product'])
推荐阅读
- c++ - 按位非运算的编译器优化
- python - Python:使用导入文件在不同的 .py 文件之间切换
- java - 在 Java 中访问 Scala 元组元素的正确方法是什么?
- javascript - 使用二级索引从 dynamoDB 获取数据
- php - 如何为新用户生成具有随机 ID 的 URL 并使它们有效
- r - 根据单元格中的值检索列名
- node.js - Passport (oAuth2) 如何与 GraphQL (TypeGraphQL) 一起使用?
- c++ - 静态变量与静态成员
- javascript - 编译的 typescript 和 vanilla javascript 之间的不同内存使用情况
- c# - Null 条件和 ToString 一起给出了意想不到的结果