我正在尝试使用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值放入新的dataframe中( dataframe已经使用正确的索引和列,这些索引和列将与生成的x和y值相匹配)。
我尝试过使用各种技术,包括numpy.where,但都没有用。我是python的新手,我被困在如何将我希望python做的事情翻译成真正的代码!我已经尝试将我的想法转化为真实的代码,但我认为解释我正在尝试做的事情变得更加困难,所以我希望这是有意义的。
我很感谢你能给予的任何帮助!
发布于 2019-09-05 16:36:40
使用示例会更好,但让我们尝试一下:)
"row contains A“在pandas中有点模糊,因为每一行都包含该行所有列的值。因此,您可能应该将其视为“选择'c‘列包含A的行”。
您可以使用:data[ data['c']==A ]
来完成此操作。这将返回其中列'c‘具有值A
的行data
的子集。
为您之前编写的内容提供更类似于代码的形式:
for i, row in data[ data['c']==A ].iterrows():
x = row['column_of_x']
y = row['column_of_y']
z = row['column_of_z']
之后,您在伪代码块中编写的内容与描述不一致。我将坚持描述,其中x
和y
表示位置,z
表示值。
在这种情况下,您应该使用类似于new_data.loc[x,y] = z
的内容。
正如我在最上面提到的,最好有一个关于你已经拥有和你想要拥有的东西的最小示例。我觉得这个问题可以通过pandas.DataFrame.groupby()
很容易地解决。
https://stackoverflow.com/questions/57807141
复制