複数のリストを受け取り、それらをpythonデータフレーム内の異なる列として配置するにはどうすればよいですか?私は試してみました この解決策 /しかしいくつかの問題がありました。
試み1:
res = Zip(lst1,lst2,lst3)
を使う試み2:
percentile_list = pd.DataFrame({'lst1Tite' : [lst1],
'lst2Tite' : [lst2],
'lst3Tite' : [lst3] },
columns=['lst1Tite','lst1Tite', 'lst1Tite'])
100行(各独立リストの長さ)x 3列(3つのリスト)のパンダデータフレームを取得する方法を教えてください。
lst
の周りの余分な角括弧を削除してみてください(このような辞書からデータフレームを作成するときにも列名を指定する必要はありません)。
import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
percentile_list = pd.DataFrame(
{'lst1Title': lst1,
'lst2Title': lst2,
'lst3Title': lst3
})
percentile_list
lst1Title lst2Title lst3Title
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
...
より高性能な解決策が必要な場合は、最初の試みのようにZip
ではなくnp.column_stack
を使用できますが、ここでの例では約2倍のスピードアップになりますが、私の意見では読みやすさのコストが少しかかります。
import numpy as np
percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]),
columns=['lst1Title', 'lst2Title', 'lst3Title'])
ここに Aditya Guru の答えを追加します。地図を使う必要はありません。あなたはそれを簡単にすることができます:
pd.DataFrame(list(Zip(lst1, lst2, lst3)))
これは列の名前を0,1,2として設定します。独自の列名を設定するには、キーワード引数columns
を上記のメソッドに渡します。
pd.DataFrame(list(Zip(lst1, lst2, lst3)),
columns=['lst1_title','lst2_title', 'lst3_title'])
それを最初のアプローチを使用して追加するだけで、次のように実行できます。
pd.DataFrame(list(map(list, Zip(lst1,lst2,lst3))))
もう1つのスケーラブルなソリューションを追加します。
lists = [lst1, lst2, lst3, lst4]
df = pd.concat([pd.Series(x) for x in lists], axis=1)
上記の答えに加えて、我々はその場で作成することができます
df= pd.DataFrame()
list1 = list(range(10))
list2 = list(range(10,20))
df['list1'] = list1
df['list2'] = list2
print(df)
それが役に立てば幸い !
@oopsiはpd.concat()
を使用しましたが、列名は含まれていませんでした。次のことができます。受け入れられた答えの最初の解決策とは異なり、列の順序を制御できます(順序付けられていない辞書を回避します)。
import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
s1=pd.Series(lst1,name='lst1Title')
s2=pd.Series(lst2,name='lst2Title')
s3=pd.Series(lst3,name='lst3Title')
percentile_list = pd.concat([s1,s3,s3], axis=1)
percentile_list
Out[32]:
lst1Title lst3Title lst3Title
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
...