如果一个单元格的值不是“”,我就有一个数据。然后,我需要python返回单元格的列标题和校园号。
最终结果应该是一个包含列标题和校园编号的新数据或列表。细胞内的值是什么并不重要,只要它不是“。
我尝试使用以下for循环语句: df是原始的dataframe,df2是新的dataframe,应该具有列名和校园名称。
for i in df.iterrows():
if df[i] == ".":
i = i + 1
else:
df2[i] = df[i].value + "" + df.col()
i = i + 1
发布于 2022-04-01 00:20:07
通过堆叠降低问题的维数可以简化,因为您可以简单地查询索引。
temp = df.set_index('Campus').stack()
result_list = temp.loc[temp!='.'].index.values
发布于 2022-04-01 00:38:57
我发现最简单的方法就是
df2 = df.where(df!='.')
df2 = df2.dropna()
第一行复制整个df,但替换所有'.‘。可以用NaN ()删除。
发布于 2022-04-01 01:13:40
您是否可以尝试用NaN替换不需要的值,然后进行堆叠?
df.replace('.', pd.NA).stack().index.to_list()
示例:
# input
A B C
0 . 2 .
1 1 . .
2 . 3 .
# output
[(0, 'B'), (1, 'A'), (2, 'B')]
若要首先使用列,请使用:
df.replace('.', pd.NA).T.stack().index.to_list()
# [('A', 1), ('B', 0), ('B', 2)]
或者,对于自上而下的订单:
df.replace('.', pd.NA).stack().swaplevel().index.to_list()
# [('B', 0), ('A', 1), ('B', 2)]
https://stackoverflow.com/questions/71700439
复制相似问题