我正在尝试做类似的事情…
我的意图是为inpandas创建一个循环,它可以遍历所有数据帧,过滤所有大于4的行。如果满足条件,它将为我提供一个包含列名和ID的新列。类似这样的内容(列输出):
输入图片描述
我正在尝试使用这段代码,但它不工作…
list = []
for col in df.columns:
for row in df[col]:
if row>4:
list.append(df(row).index, col)
有人能帮我吗?我会非常感谢你的……
这是一个有pandas.DataFrame.loc
和pandas.Series.ge
的命题:
collected_vals = []
for col in df.filter(like="X").columns:
collected_vals.append(df.loc[df[col].ge(4), "ID"].astype(str).radd(f"{col}, "))
#if list is needed
from itertools import chain
l = list(chain(*[ser.tolist() for ser in collected_vals]))
#if Series is needed
ser = pd.concat(collected_vals, ignore_index=True)
#if DataFrame is needed
out_df = pd.concat(collected_vals, ignore_index=True).to_frame("OUTPUT")
#输出print(out_df)
OUTPUT
0 X40, 1100
1 X40, 1200
2 X50, 700
3 X50, 800
4 X50, 900
使用的输入:
print(df)
X40 X50 ID
0 1 5 700
1 2 6 800
2 1 8 900
3 3 2 1000
4 4 3 1100
5 6 1 1200