- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据框,其中 X 和 Y 是细胞坐标,mRNA 是每个细胞的 mRNA 数量。
ID X Y mRNA
0 0 149.492 189.153 0
1 1 115.084 194.082 2
2 2 135.331 194.831 7
3 3 136.965 184.493 2
4 4 124.025 190.069 1
... ... ... ... ...
2410 2410 452.596 256.313 0
2411 2411 196.448 333.959 46
2412 2412 190.779 318.418 71
2413 2413 202.941 335.446 37
2414 2414 254.967 369.431 13
目前我正在尝试应用这个公式,但我无法真正使其发挥作用。理想情况下我想做这个操作:
For ID 0: sqrt[((X0-X1)^2)+((Y0-Y1)^2)]
sqrt[((X0-X2)^2)+((Y0-Y2)^2)]
............
sqrt[((X0-Xn)^2)+((Y0-Yn)^2)]
(where n is the last cell ID in my csv file 2414)
然后,必须对所有单元格对 ID 1 执行相同的操作,然后对 ID 2 执行相同的操作,依此类推。
import pandas as pd
import numpy as np
df=pd.read_csv('Detailed2.csv', sep=',')
print(df)
df1 = np.sqrt(((df['X'].sub(df['X']))^2).add((df['Y'].sub(df['Y']))^2)).to_frame('col')
print(df1)
此代码不起作用。
最佳答案
用途:
for Id in df['ID']:
df[f'new_col_{Id}']=( df[['X','Y']].sub(df.loc[df['ID'].eq(Id),['X','Y']].values)
.pow(2)
.sum(axis=1)
.pow(1/2) )
print(df)
<小时/>
输出
ID X Y mRNA new_col_0 new_col_1 new_col_2 \
0 0 149.492 189.153 0 0.000000 34.759251 15.256920
1 1 115.084 194.082 2 34.759251 0.000000 20.260849
2 2 135.331 194.831 7 15.256920 20.260849 0.000000
3 3 136.965 184.493 2 13.365677 23.889895 10.466337
4 4 124.025 190.069 1 25.483468 9.800288 12.267937
2410 2410 452.596 256.313 0 310.455311 343.201176 323.167320
2411 2411 196.448 333.959 46 152.228918 161.819886 151.960153
2412 2412 190.779 318.418 71 135.698403 145.565016 135.455628
2413 2413 202.941 335.446 37 155.751204 166.441079 156.024647
2414 2414 254.967 369.431 13 208.866304 224.308996 211.655221
new_col_3 new_col_4 new_col_2410 new_col_2411 new_col_2412 \
0 13.365677 25.483468 310.455311 152.228918 135.698403
1 23.889895 9.800288 343.201176 161.819886 145.565016
2 10.466337 12.267937 323.167320 151.960153 135.455628
3 0.000000 14.090258 323.698997 160.867375 144.332436
4 14.090258 0.000000 335.182293 161.088246 144.670530
2410 323.698997 335.182293 0.000000 267.657802 269.082093
2411 160.867375 161.088246 267.657802 0.000000 16.542679
2412 144.332436 144.670530 269.082093 16.542679 0.000000
2413 164.741133 165.415257 261.896259 6.661097 20.925272
2414 219.377610 222.073264 227.712326 68.430521 81.990399
new_col_2413 new_col_2414
0 155.751204 208.866304
1 166.441079 224.308996
2 156.024647 211.655221
3 164.741133 219.377610
4 165.415257 222.073264
2410 261.896259 227.712326
2411 6.661097 68.430521
2412 20.925272 81.990399
2413 0.000000 62.142457
2414 62.142457 0.000000
使用 itertuples
@Trenton McKinney 和 @Alexander Cécile 解决方案(推荐)
for row in df.itertuples():
df[f'id_{row.Index}'] = df[['X', 'Y']].sub([row.X, row.Y], axis='columns').pow(2).sum(axis=1).pow(1/2).round(2)
应用的解决方案
df.join(
df['ID'].apply(lambda x:
df[['X','Y']].sub(df.loc[df['ID'].eq(x),['X','Y']].values)
.pow(2)
.sum(axis=1)
.pow(1/2))
.add_prefix('new_col_')
)
请记住,您不能使用重复的 ID
关于python - Pandas Dataframe 迭代行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59365842/
假设我有 3 个 DataFrame。其中一个 DataFrame 的列名不在其他两个中。 using DataFrames df1 = DataFrame([['a', 'b', 'c'], [1,
假设我有 3 个 DataFrame。其中一个 DataFrame 的列名不在其他两个中。 using DataFrames df1 = DataFrame([['a', 'b', 'c'], [1,
我有一个 largeDataFrame(多列和数十亿行)和一个 smallDataFrame(单列和 10,000 行)。 只要 largeDataFrame 中的 some_identifier 列
我有一个函数,可以在其中规范化 DataFrame 的前 N 列。我想返回规范化的 DataFrame,但不要管原来的。然而,该函数似乎也会对传递的 DataFrame 进行变异! using D
我想在 Scala 中使用指定架构在 DataFrame 上创建。我尝试过使用 JSON 读取(我的意思是读取空文件),但我认为这不是最佳实践。 最佳答案 假设您想要一个具有以下架构的数据框: roo
我正在尝试从数据框中删除一些列,并且不希望返回修改后的数据框并将其重新分配给旧数据框。相反,我希望该函数只修改数据框。这是我尝试过的,但它似乎并没有做我所除外的事情。我的印象是参数是作为引用传递的,而
我有一个包含大约 60000 个数据的庞大数据集。我会首先使用一些标准对整个数据集进行分组,接下来我要做的是将整个数据集分成标准内的许多小数据集,并自动对每个小数据集运行一个函数以获取参数对于每个小数
我遇到了以下问题,并有一个想法来解决它,但没有成功:我有一个月内每个交易日的 DAX 看涨期权和看跌期权数据。经过转换和一些计算后,我有以下 DataFrame: DaxOpt 。现在的目标是消除没有
我正在尝试做一些我认为应该是单行的事情,但我正在努力把它做好。 我有一个大数据框,我们称之为lg,还有一个小数据框,我们称之为sm。每个数据帧都有一个 start 和一个 end 列,以及多个其他列所
我有一个像这样的系列数据帧的数据帧: state1 state2 state3 ... sym1 sym
我有一个大约有 9k 行和 57 列的数据框,这是“df”。 我需要一个新的数据框:'df_final'- 对于“df”的每一行,我必须将每一行复制“x”次,并将每一行中的日期逐一增加,也就是“x”次
假设有一个 csv 文件如下: # data.csv 0,1,2,3,4 a,3.0,3.0,3.0,3.0,3.0 b,3.0,3.0,3.0,3.0,3.0 c,3.0,3.0,3.0,3.0,3
我只想知道是否有人对以下问题有更优雅的解决方案: 我有两个 Pandas DataFrame: import pandas as pd df1 = pd.DataFrame([[1, 2, 3], [
我有一个 pyspark 数据框,我需要将其转换为 python 字典。 下面的代码是可重现的: from pyspark.sql import Row rdd = sc.parallelize([R
我有一个 DataFrame,我想在 @chain 的帮助下对其进行处理。如何存储中间结果? using DataFrames, Chain df = DataFrame(a = [1,1,2,2,2
我有一个包含 3 列的 DataFrame,名为 :x :y 和 :z,它们是 Float64 类型。 :x 和 "y 在 (0,1) 上是 iid uniform 并且 z 是 x 和 y 的总和。
这个问题在这里已经有了答案: pyspark dataframe filter or include based on list (3 个答案) 关闭 2 年前。 只是想知道是否有任何有效的方法来过
我刚找到这个包FreqTables ,它允许人们轻松地从 DataFrames 构建频率表(我正在使用 DataFrames.jl)。 以下代码行返回一个频率表: df = CSV.read("exa
是否有一种快速的方法可以为 sort 指定自定义订单?/sort!在 Julia DataFrames 上? julia> using DataFrames julia> srand(1); juli
在 Python Pandas 和 R 中,可以轻松去除重复的列 - 只需加载数据、分配列名,然后选择那些不重复的列。 使用 Julia Dataframes 处理此类数据的最佳实践是什么?此处不允许
我是一名优秀的程序员,十分优秀!