用其他dataframe的列值替换dataframe的一列中的nan值时出现问题。下面是一个测试示例:
Name Age Name2
0 tom 10 tom
1 nick 15 nick
2 juli 14 juli
3 NaN 12 anne
4 error 17 neo
我想用其他dataframe中的特定值替换列名中的Nan值(如果其中有一些Nan值,则不是其他列),例如此dataframe中的Name2值:
Name Age Name2
4 error 17 neo
我想得到的是:
Name Age Name2
0 tom 10 tom
1 nick 15 nick
2 juli 14 juli
3 neo 12 anne
4 error 17 neo
这是此示例的测试代码:
# initialize list of lists
data = [['tom', 10, 'tom'], ['nick', 15, 'nick'], ['juli', 14, 'juli'], [np.nan, 12, 'anne'], ['error', 17, 'neo']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Name2'])
df1=df[df.Age==np.max(df.Age)]
然后我尝试了这三种方法,但都不起作用——我的数据帧始终保持Nan值。
df.Name.fillna(df1.Name2, inplace=True)
df.where(df.Name.isnull(), df1.Name2, axis=0)
df[df.Name.isnull()].Name=df1.Name2
你能告诉我哪里出错了吗?
这里需要将一个元素系列
转换为标量:
df.Name.fillna(df1.Name2.iat[0], inplace=True)
#assign output to new DataFrame, test for not missing values
df = df.where(df.Name.notna(), df1.Name2.iat[0])
#use DataFrame.loc for avoid SettingWithCopyWarning
df.loc[df.Name.isnull(), 'Name']=df1.Name2.iat[0]
print (df)
Name Age Name2
0 tom 10 tom
1 nick 15 nick
2 juli 14 juli
3 neo 12 anne
4 error 17 neo
详细:
print (df1.Name2)
4 neo
Name: Name2, dtype: object
print (df1.Name2.iat[0])
neo
我和Spark一起在Databricks上工作。编程语言是Scala。 我有两个数据帧: 主数据框:见截图:1 查找数据帧:参见屏幕截图3 我想: 查找主数据框中“年龄”=-1的所有行 我对如何做这件事伤了脑筋。我唯一想到的是将dataframe存储为DataRicks中的表,并使用SQL语句(SQL.Context.SQL…),结果非常复杂。 我想知道是否有更有效的方法。 编辑:添加可复制的示例
我有一个关于熊猫以及正确索引和替换值的问题。 我有两个数据帧,df1和df2,具有相同的列(Col1、Col2、Col3和Col4)。 在df1中,我想用另一个值(比如100)替换与df2中其他列(Col1、Col2和Col3)的值匹配的行中Col4中的值。 生成的df1看起来像这样: 我试过这样的方法: 但是我得到了错误,我不确定这是否达到了我想要的。
我正面临这个问题,其中我有一个数据帧,比如: 和另一个数据帧: 现在我想要的是,将df2的列插入到df1的特定位置,这样df1就变成了(实际上一个新的df也会起作用): 我现在通过创建一个新的空df来实现这一点,然后迭代这两个df的列,然后依次添加每一列。这是低效的、丑陋的,并且违背了数据流的全部目的。所以我很想知道,这个已经有方法了吗?我不确定这样的问题是否已经在这里得到了回答,但我肯定我没有找
当我尝试将函数应用于Amount列时,我得到以下错误: 我试过使用Math模块中的.isnan应用函数我试过使用pandas.replace属性我试过使用pandas0.9中的.sparse data属性我也试过使用函数中的if NaN==NaN语句。我还看了这篇文章,如何在R数据帧中用0替换NA值?同时查看一些其他文章。我试过的所有方法都不起作用,或者不认识南。如有任何提示或解决方案,将不胜感激
考虑以下数据帧: 使用dplyr,我如何在每一列(不隐式命名)上筛选所有大于2的值。 模拟假设的
对于熊猫数据帧的特定列,该列实际上是转换成BCD的16位数据。我只想提取特定行的14-8位并转换为BCD。下面的公式适用于如下的小数据帧。 但当我申请时 对于688126行的较大数据帧,我得到一个错误,说 基数为2的int()的文本无效:“” 错误如下所示 ValueError Traceback(最近调用最后一次)在1 df.LO_TIME_0_J2_0---- C:\ProgramData\A