【发布时间】:2022-08-15 04:36:18
【问题描述】:
我有以下数据集
import pandas as pd
df = pd.DataFrame({\"ID\": [1,1,1,1,1,2,2,2,2,2],
\"TP1\": [1,2,3,4,5,9,8,7,6,5],
\"TP2\": [11,22,32,43,53,94,85,76,66,58],
\"TP10\": [114,222,324,443,535,94,385,76,266,548],
\"count\": [1,2,3,4,10,1,2,3,4,10]})
print (df)
我想要一个基于 ID、TP 和计数变量的 df 中的“Final”变量。
最终结果将如下所示。
import pandas as pd
import numpy as np
df = pd.DataFrame({\"ID\": [1,1,1,1,1,2,2,2,2,2], \"TP1\": [1,2,3,4,5,9,8,7,6,5],
\"TP2\": [11,22,32,43,53,94,85,76,66,58], \"TP10\": [114,222,324,443,535,94,385,76,266,548],
\"count\": [1,2,3,4,10,1,2,3,4,10],
\"final\" : [1,22,np.nan,np.nan,535,9,85,np.nan,np.nan,548]})
print (df)
例如, if 的循环将执行以下操作
- 它将查看 ID
- 那么对于第一个 ID,它应该查看 count 的值,如果 count 的值为 1
- 然后如果应该查看变量 TP1,它的第一个值应该放在 \"final\" 变量中。
然后查看 ID 1 的计数 2,TP2 的值应该出现在“final”变量中,依此类推。
我希望我的问题很清楚。我正在寻找一个循环,因为原始数据集中有 1000 个 TP 变量。
我试图制作类似以下的代码,但它完全是垃圾。
for col in df.columns: if col.startswith(\'TP\') and count == int(col[2:]) df[\"Final\"] = count谢谢
-
在您的预期输出中,71、1836 等来自哪里。前 2 行不应该取自 TP1。即应该是
1, 2而不是71, 1836。请说清楚。
标签: python pandas loops for-loop if-statement