DataFrame
の場合、1つの列に対して異なる行が同じ値を持つことがあります。一例として
:DataFrameをDataFrameに分割する
import pandas as pd
df = pd.DataFrame({
"Name" : ["Alice", "Bob", "John", "Mark", "Emma" , "Mary"] ,
"City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] })
City Name
0 Seattle Alice
1 Seattle Bob
2 Portland John
3 Seattle Mark
4 Seattle Emma
5 Portland Mary
、いくつかの列によって共有される「都市」(例えば、「ランド」)のために指定された値。
このデータフレームから、1つの列の値を共通に持つ複数のデータフレームを作成したいとします。上記の例では、私は、次のデータフレームを取得したい:
City Name
0 Seattle Alice
1 Seattle Bob
3 Seattle Mark
4 Seattle Emma
と
City Name
2 Portland John
5 Portland Mary
このanswerから、私は1つのデータフレームを生成するために使用することができるマスクを作成しています:
def mask_with_in1d(df, column, val):
mask = np.in1d(df[column].values, [val])
return df[mask]
# Return the last data frame above
mask_with_in1d(df, 'City', 'Portland')
問題は、名前が割り当てられるすべてのデータフレームを効率的に作成することです。私はそれをこのようにやっている:私がさらに操作することができ、データフレームdf_Seattle
とdf_Portland
を与える
unique_values = np.sort(df['City'].unique())
for city_value in unique_values:
exec("df_{0} = mask_with_in1d(df, 'City', '{0}')".format(city_value))
。
これを行うには良い方法がありますか?
再現性のある質問。どうも。 – Kanak