【发布时间】:2020-03-19 01:04:57
【问题描述】:
我有这段代码 sn-p 的目标是用数据框列的值填充子列表,但只使用与另一列中的某个值匹配的记录。
最后一行最相关,但我添加了框架。
for key, value in dict1.items():
if key[0] + "rel" in dict2:
i = int(key[0])
name_col = df1.columns[int(value)]
lists_dict1[i] = df1.loc[df1["header5"] == 1, name_col].tolist()
我的问题是子列表 lists_dict1[i] 最后是空的。 它必须是最后一行(?),因为...
这里是一些我已经测试过的东西的背景:
i = int(key[0])
单独打印,它可以工作(例如 0 和 2),这也表明 If 语句已激活
name_col = df1.columns[int(value)]
打印了这个,它给了我列的实际名称
print(df1["header5"])
列存在;预期值(0 或 1)
print(df1.loc[df1["header5"] == 1, name_col].tolist())
空列表>> 为什么?
print(df1.loc[df1["header5"] == 1, "crit_abs"])
空系列对象
dict1 {'0ber': '0', '1ber': '1', '2ber': '2', '3ber': '3'}
dict2 {'0rel': '0', '2rel': '2', '1abs': '1', '3abs': 'ja'}
df1(示例;仅用于上下文;没有问题)
df1 = {"header1": ["abc1", "abc2", "abc3"], "header2": [1, 1, 0], "header3": ["def5", "def8", "def2"], "header4": ["ja", "nein", "ja"], "header5": [1, 0, 1]}
df1 = pandas.DataFrame.from_dict(df1)
【问题讨论】:
-
df1 包含什么?如果我使用: import pandas as pd df1Data = [ {'header5': 1, 'crit_abs': 'one'}, {'header5': 0, 'crit_abs': 'zero'} ] df1 = pd.DataFrame(df1Data ) print(df1.loc[df1['header5'] == 1, 'crit_abs']) 我得到:
0 one Name: crit_abs, dtype: object(抱歉无法弄清楚如何格式化评论) -
谢谢,我编辑了我的问题并为上下文添加了一个 DataFrame(示例)!
标签: python pandas indexing filter conditional-statements