首页 > 解决方案 > 使用 x,y 坐标从 Pandas 数据框中删除数据并插入到另一个数据框中

问题描述

我正在尝试使用 pandas 在数据框中搜索数据,然后使用收集到的数据将此数据插入到新数据框中的特定位置。

假设我希望我的代码遵循以下内容:

If row contains [A] then 

    x=data.iloc[<row>, <column selection>]

    y=data.iloc[<row>, <column selection>]

    z=data.iloc[<row>, <column selection>]

insert x to newdataframe at location (y,z)

所以我想在该行中搜索一个值,然后如果该值存在,则通过新找到的行和预定义的列选择返回该行中的其他值。

然后,其中两个值将充当 x 和 y 坐标,以将 z 值放入新的数据帧中(数据帧已经使用正确的索引和将匹配生成的 x 和 y 值的列制作)。

我尝试过使用各种技术,包括 numpy.where 但还没有成功。我对 python 很陌生,而且我很困惑如何将我希望 python 做的事情翻译成真正的代码!我已经尝试将我的想法转换为真正的代码,但我认为解释我正在尝试做的事情变得更加困难,所以我希望这是有道理的。

感谢您提供的任何帮助!

标签: pythonpandasdataframe

解决方案


使用示例会更好,但让我们尝试:)

“行包含 [A]”在 pandas 中有点模糊,因为每一行都包含该行所有列的值。所以也许你应该把它想象成“选择列'c'包含A的行”
你可以这样做:data[ data['c']==A ]. 这将返回data列 'c' 具有 value的行子集A

要为您之前编写的内容提供更像代码的形式:

for i, row in data[ data['c']==A ].iterrows():

    x = row['column_of_x']
    y = row['column_of_y']
    z = row['column_of_z']

之后您在伪代码块中编写的内容与描述不一致。我将坚持描述,其中xy表示位置,并且z是值。

在这种情况下,您应该使用类似new_data.loc[x,y] = z.

正如我在最上面提到的那样,最好有一个关于你拥有什么以及你想要拥有什么的最小示例。我觉得这个问题可以很容易地解决pandas.DataFrame.groupby()


推荐阅读