У меня есть панд dataframe в следующем виде:Повышение конверсии dataframe панд в Python
id2_cond1 id2_cond2 id2_cond3 id2_cond4
id2_cond1 1.000000 0.819689 -0.753702 -0.617213
id2_cond2 0.819689 1.000000 -0.554437 -0.295122
id2_cond3 -0.753702 -0.554437 1.000000 0.939336
id2_cond4 -0.617213 -0.295122 0.939336 1.000000
То, что я хочу сделать, это преобразовать dataframe в следующем виде:
cond1_cond2 cond1_cond3 cond1_cond4 cond2_cond3 cond2_cond4 cond3_cond4
id2 0.8196886 -0.7537023 -0.6172134 -0.554437 -0.2951216 0.9393364
I может сделать это правильно, используя следующий сценарий:
df_tmp = pd.DataFrame(index=[identifier], columns=cols)
counter = 0
for x in range(len(df)):
for y in range(x + 1, len(df)):
df_tmp.ix[0, counter] = df.ix[x, y]
counter += 1
print(df_tmp)
Проблема с этим подходом заключается в том, что я должен предварительно определить e столбцы, и я должен знать порядок.
cols = ["cond1_cond2", "cond1_cond3", "cond1_cond4", "cond2_cond3", "cond2_cond4", "cond3_cond4"]
Есть ли лучший способ преобразования этого блока данных, который автоматически создает различные комбинации?
От где вы получите оригинальный dataframe? Он выглядит как продукт двух исходных данных. Я чувствую, что, хотя это тривиальная проблема для решения, но я думаю, что вы, возможно, пытаетесь решить проблему более сложным образом, чем это необходимо. – firelynx
Первоначально у меня есть кортеж в следующей форме: (('id2_cond1', [0, 1, 2, 3, 4, 5]), ('id2_cond2', [3, 1, 3, 3, 4, 5]), ('id2_cond3', [9, 1, 2, 3, 0, 0]), ('id2_cond4', [12, 1, 3, 3, 1, 1])). Я преобразую его в dict, а затем в фрейм данных, чтобы вычислить коэффициент коэрбитации: df = pd.DataFrame (dict (f)). Corr (method = 'spearman') – fitziano
Может быть, этот вопрос будет связан с тем, что вы хотите? http://stackoverflow.com/questions/24002820/returning-groups-of-correlated-columns-in-pandas-data-frame – firelynx