我正在调用一个返回JSON文件的API。将JSON文件解析为数据帧时,返回下表:
如你所见,有三个级别的类别。我想用之前列中的值替换列中的“无”值。数据框应该是这样的:
我已经尝试过一些循环和以下代码:
for i in range(len(df.columns)):
df.iloc[:,i] = np.where(df.iloc[:,i] == "None",df.iloc[:,i+1],df.iloc[:,i])
但这是行不通的。我怎样才能做到这一点?
非常感谢。
DataFrame。ffill
在PythonNone
对象上工作。传递轴=1以跨列填充:
filled = df.ffill(axis=1)
print(filled)
Level 1 Level 2 Level 3
0 Total Category1 Category 1.2
1 Total Total Total
2 Total Category 2 Category 2
3 Total Category 2 Category 2.1
4 Total Category 3 Category 3
5 Total Category 3 Category 3.1
确保您的None
实际上是np。nan
,然后您的任务将变得简单,因为沿列向前填充将完成您需要的操作:
df.replace('None',np.nan,inplace=True)
df = df.ffill(axis=1)
print(df)
Level 1 Level 2 Level 3
0 Total Category1 Category 1.2
1 Total Total Total
2 Total Category 2 Category 2
3 Total Category 2 Category 2.1
4 Total Category 3 Category 3
5 Total Category 3 Category 3.1
问题内容: 如果我有一个包含多列的数据框,如何只填充一列?还是一组列? 我只知道如何按轴进行操作。 问题答案: tl; dr: 我还添加了一个自我包含的示例:
假设我有以下数据。 我想用以前的值填充缺少的日期(按字段“g”分组)。例如,我想在上面的示例中添加以下主菜: 我该怎么做呢?
问题内容: 这是我的df的简化示例: 我想按行对列中的数据求和: 现在,我的问题来了!我想创建4个新列,并从每一行的总和中计算百分比值。因此,第一个新列中的第一个值应该是(0.095389 / 4.258550),第二个新列中的第一个值(0.556978 / 4.258550)…依此类推…请帮助 问题答案: 您可以像这样手动轻松地为每个列执行此操作: 如果您要一步一步对所有列进行此操作,则可以使用
问题内容: 我正在分析一个时间序列,并基于某些条件,我可以挑选出事件 开始 或 结束 的行。此时,我的系列看起来像这样(为简洁起见,我省略了一些重复的值): 设置 这是我想要实现的( 理想情况下没有循环) 这是我尝试过的 通过对数据质量的一些乐观假设,我可以获得如下 事件编号 : 然后,我可以将其恢复到原始数据框,并使用 问题 如您所见,事件之间的时间(01:20到02:20)与事件#1相关联。
我有一个带有几列的。其中一列包含使用货币的符号,例如欧元或美元符号。另一列包含预算值。例如,在一行中,它可能意味着5000欧元的预算,而在下一行中,它可能意味着2000美元的预算。 在熊猫我想添加一个额外的列到我的DataFrame,正常化的欧元预算。所以基本上,对于每一行,如果货币列中的符号是欧元符号,新列中的值应该是预算列中的值*1,新列中的值应该是预算列的值*0.78125如果货币栏中的符号
我有两个Dataframes一个与日期集(df1)和另一个与emp_ids集(df2)。我试图创建一个新的Dataframe,这样df2中的每个emp_id都被标记为df1中的每个日期。 下面给出了我的数据帧的外观 df1 df2 预期产出: 我将日期列转换为字符串,并尝试执行以下操作,但返回的数据框为空 我尝试做
问题内容: 我有点被困在提取另一个变量的条件变量的值上。例如,以下数据框: 如何获得when的价值?每当我提取的值时,我都会得到一个对象,而不是字符串。 问题答案: 您可以用来获取满足条件的序列,然后获取第一个元素:
问题内容: 我想在Pandas Dataframe中复制行。每行应重复n次,其中n是每行的一个字段。 这可能吗? 问题答案: 您可以用来获取重复的索引,然后使用它来索引框架: 之后,只需清理一下即可: 请注意,如果您可能有重复的索引值得担心,则可以改用: 使用位置,而不使用索引标签。