以下是一个按照一个列中唯一值随机拆分DataFrame的解决方法的代码示例:
import pandas as pd
import numpy as np
# 创建一个示例DataFrame
data = {'A': ['apple', 'banana', 'apple', 'banana', 'apple', 'banana'],
'B': [1, 2, 3, 4, 5, 6],
'C': [7, 8, 9, 10, 11, 12]}
df = pd.DataFrame(data)
# 获取唯一值列表
unique_values = df['A'].unique()
# 创建一个字典用于存储拆分后的DataFrame
split_dfs = {}
# 随机拆分DataFrame
for value in unique_values:
# 根据唯一值筛选出子DataFrame
sub_df = df[df['A'] == value]
# 随机打乱子DataFrame的顺序
sub_df = sub_df.sample(frac=1).reset_index(drop=True)
# 存储拆分后的子DataFrame
split_dfs[value] = sub_df
# 打印拆分后的结果
for key, value in split_dfs.items():
print("DataFrame for unique value:", key)
print(value)
print("\n")
这段代码首先创建了一个示例DataFrame,并从列"A"中获取唯一值列表。然后使用一个字典split_dfs
来存储拆分后的DataFrame。接下来,使用一个循环来遍历唯一值列表,对每个唯一值进行拆分操作。在循环中,首先使用筛选条件df['A'] == value
来获取该唯一值对应的子DataFrame,然后使用sample(frac=1)
方法随机打乱子DataFrame的顺序,最后将拆分后的子DataFrame存储在字典split_dfs
中。最后,使用另一个循环来打印拆分后的结果。