【发布时间】:2022-01-13 18:34:10
【问题描述】:
我有一个字典,其中的键是两部分,一个是索引坐标,另一个是列坐标。我想使用这本字典根据这些坐标填充熊猫数据框。
例如我的字典是这样的:
final = {('BUV395', 'BUV496'): 0, ('BUV395', 'BUV563'): 0, ('BUV395', 'BUV615'): 0, ('BUV395', 'BUV661'): 0, etc...
我的函数的输入是带有原始数据的 pandas DataFrame - 只是为了给下面的代码提供上下文:
def matrix_all_pairs(df):
dataframe = pd.DataFrame(index=range(0,len(df.index.values)),columns=range(0,len(df.index.values)))
dataframe.columns = df.index.values
idx = list(df.index.values)
list_fluor = list(combinations(df.index.values, 2))
final = {}
for fluor in list_fluor:
if (r2_score(df.xs(fluor[0]), df.xs(fluor[1]))) < 0:
final[fluor] = 0
else:
final[fluor] = (r2_score(df.xs(fluor[0]), df.xs(fluor[1])))
for fluor, value in list_fluor:
x = value
dataframe.loc(idx.index(fluor[0]), fluor[1]) = x
dataframe.index = df.index.values
return(dataframe)
当我尝试运行它时,它给了我“语法错误:无法分配给函数调用”的行:
dataframe.loc(idx.index(fluor[0]), fluor[1]) = x
有没有更好的方法来做到这一点?我看到很多人说使用循环填充空 DataFrame 很麻烦,但我不确定我还能怎么做?
我不知道如何发布我的数据以供人们使用 - 我是这个网站的新手。
【问题讨论】:
-
目前还不清楚您要做什么。你说你有一个字典,它的键/值对看起来像 (str, str'): int 并且你想使用字典创建一个 df 。然后,您将显示一个函数,该函数具有一个名为 df 的变量,该变量通常用于表示一个数据帧,您似乎可以从中创建另一个数据帧。我迷路了,你能澄清一下吗?
-
“我不确定如何发布我的数据以供人们使用”因为您正在尝试创建一个数据框,只需给出您给出的示例
final = {...}就可以了。然后,我将添加您希望这个小字典成为数据框时的外观。 -
你得到
SyntaxError: can't assign to function call因为 df.loc 应该使用[]而不是() -
对于第一条评论:输入 df 具有原始数据。我正在做成对线性回归,将每一行与其他每一行进行比较,并输出一个字典,其中被比较的对作为键,线性回归的 r^2 作为值。然后,我想将该字典转换为一个新的数据框,其中 r^2 在比较的交点处。这有助于澄清事情吗?
-
第三条评论:谢谢!那行得通。现在我遇到了能够调用每个字典键的第一和第二部分的麻烦。我有它的方式给了我第一个和第二个字母而不是第一个和第二个单词(我认为字符串是“代码”的表达方式?)你有解决方案吗?
标签: python pandas dataframe dictionary