2017-05-08 3 views
2

を意味するものでは私はこのコードを実行しようとしていますされていますのPythonとValueError:渡された値の形状は(1、627)、インデックスは(3、627)

import pandas as pd 
import numpy as np 


df = pd.read_csv('example.csv', sep=';', engine='python') 
df1 =df.sort_values(['topic', 'student', 'level'], ascending=True) 

count_list = df1.apply(lambda x: [df.ix[x.name-1].student if x.name >0 else np.nan, x.student, x.level>1], axis=1).values 

#line giving the error 
df1_count = pd.DataFrame(columns=['st_source','st_dest','reply_count'], data=count_list) 

をしかし絶えず私は、このエラーメッセージが出ます:

ValueError: Shape of passed values is (1, 627), indices imply (3, 627) 

どのように私はそれを修正することができます知っていますか?

ありがとうございました!

+0

どのような行でエラーが表示されますか? –

+0

@ juanpa.arrivillaga df1_count = pd.DataFrame(columns = ['st_source'、 'st_dest'、 'reply_count']、data = count_list) – Sheron

+0

ここでの問題は、新しい列のない方法でデータフレームを変更したことです元のデータフレームと同じ数の要素を持ちます。 –

答えて

2
count_list = df1.apply(lambda x: (df.ix[x.name-1].student,np.nan,np.nan) if x.name 0 else (np.nan, x.student, x.level>1), axis=1).values 
df2 = pd.DataFrame(count_list) 
df2[['st_source','st_dest','reply_count']] = df2[0].apply(pd.Series) 
df2 = df2.drop(0, 1) 

これは、このようなデータフレームが返されます:

>>> df2 
    st_source st_dest reply_count 
0 -0.689652  NaN   NaN 
1 0.696232  NaN   NaN 
2 0.767232  NaN   NaN 
3  NaN 0.696232  False 
4 1.024604  NaN   NaN 
5 1.121045  NaN   NaN 

は、おそらくこれを行うには、より良く、より効率的な方法があるが、これは問題を解決します。通知あなたのifステートメントは、どの条件に該当するかに関係なく、長さ3のタプルを返すようにしました。

+0

ありがとう! @ViniciusAguiar – Sheron

関連する問題