Моя цель состоит в том, чтобы иметь возможность группировать строки CSV-файла по значению столбца, а также выполнять обратную операцию. К примеру, желательно, чтобы быть в состоянии преобразовать назад и вперед между этими двумя форматами:Группировка и разгруппировка на основе столбца
uniqueId, groupId, feature_1, feature_2
1, 100, text of 1, 10
2, 100, some text of 2, 20
3, 200, text of 3, 30
4, 200, more text of 4, 40
5, 100, another text of 5, 50
Сгруппированного на GroupID:
uniqueId, groupId, feature_1, feature_2
1|2|5, 100, text of 1|some text of 2|another text of 5, 10|20|50
3|4, 200, text of 3|more text of 4, 30|40
разделителя (здесь |) предполагаются не существуют где угодно в данных.
Я пытаюсь использовать Pandas для выполнения этого преобразования. Мой код до сих пор может получить доступ к ячейке строк, сгруппированных по groupId, но я не знаю, как заполнить новый dataframe.
Как мой метод может быть выполнен, чтобы выполнить преобразование в нужный новый df?
Как бы выглядел обратный метод, который преобразует новый df обратно в исходный?
Если R является лучшим инструментом для этой работы, я также открыт для предложений в R.
import pandas as pd
def getGroupedDataFrame(df, groupByField, delimiter):
''' Create a df with the rows grouped on groupByField, values separated by delimiter'''
groupIds = set(df[groupByField])
df_copy = pd.DataFrame(index=groupIds,columns=df.columns)
# iterate over the different groupIds
for groupId in groupIds:
groupRows = df.loc[df[groupByField] == groupId]
# for all rows of the groupId
for index, row in groupRows.iterrows():
# for all columns in the df
for column in df.columns:
print row[column]
# this prints the value the cell
# here append row[column] to its cell in the df_copy row of groupId, separated by delimiter
Я заметил, что в старой версии Панды для col.str.split (DELIM, расширение = True), расширение является не известный аргумент ключевого слова. Решение обходить это находится в http://stackoverflow.com/a/35567326/3229995 – tkja