我有一个 100 万行的数据帧,其中包含以下内容: 我真的不知道具体的键列表,所以我不能说,在键 ABCDE 之后过滤。
键;值
A;1
A;2
B;3
B;4
B;5
C;6
C;7
D;8
我想将这个分成 3 个数据帧,将这些组保持在一起 所以结果应该是
A;1
A;2
B;3
B;4
B;5
C;6
C;7
D;8
所以我想拆分它,但它需要将组保持在一起, 例如,你不能这样做
A;1
A;2
B;3
B;4
B;5
C;6
C;7
D;8
所以我想在一组完成后拆分它。
我对 pandas groupby 函数进行了一些尝试,但是当您将所有组放在一起时,我不太确定如何进行拆分。
拆分可以是非常随机的,例如。每 1K 行 组需要在一起并不重要。
答案 0 :(得分:0)
有几种方法,例如使用 groupby。这是一种方法。
import pandas as pd
df = pd.DataFrame({"key":["A","A","B","B","C","C","D","D"],
"value":[1,2,3,4,5,6,7,8]})
df.loc[df["key"] == "A", :].to_csv("filename_A.csv")
df.loc[(df["key"] == "B") | (df["key"] == "C"), :].to_csv("filename_BC.csv")
df.loc[df["key"] == "D", :].to_csv("filename_D.csv")
答案 1 :(得分:0)
您可以使用 numpy.array_split
来按组进行拆分,并在 Series.isin
和 boolean indexing
中选择值:
N = 3
for i, key in enumerate(np.array_split(df['Key'].unique(), N)):
print (key)
df[df['Key'].isin(key)].to_csv(f'file{i}.csv', index=False)