我正在制作一个python脚本,我希望将几列字符串数据组合起来,并在创建新列之前按字母顺序对它们进行排序。为了简化我的例子,这里是我正在处理的数据格式的一个非常简单的例子:
Ingredient 1, Ingredient 2, Ingredient 3, Ingredient Summary
pickles, beef, mayo, beef; mayo; pickles
sugar, flour, eggs, eggs; flour; sugar
我想要实现的最终产品是一个新的专栏,其中3种成分被组合并按字母顺序排列:
import pandas
CSV_file = pandas.read_csv('ingredients.csv')
df = pandas.DataFram(CSV_file)
df['Ingredient Summary'] = df['Ingredient 1'] + '; ' + df['Ingredient 2']
print(df['Ingredient Summary'])
我刚刚开始学习python两周前的目标是从网站上抓取一些数据并将其组织成一个csv来操作excel。我成功地从网站上抓取数据,但我真的很难修改CSV数据。这是我到目前为止的代码,你可以看到代码目前没有排序我只能弄清楚如何将数据组合成一个新列。
This is how is solve this issue:
//deactivate checkboxes if there is a conflict with scheduling
$(function() {
$('[name="js-frameworks"]').change(function() {
if ($(this).is(':checked')) {
$('[name="express"]').prop('disabled', true);
} else if (!$(this).is(':checked')) {
$('[name="express"]').prop('disabled', false);
}
})
});
$(function() {
$('[name="express"]').change(function() {
if ($(this).is(':checked')) {
$('[name="js-frameworks"]').prop('disabled', true);
} else if (!$(this).is(':checked')) {
$('[name="js-frameworks"]').prop('disabled', false);
}
})
});
....
我希望有人可以指出一个简单的解决方案来实现这一目标。我在这个论坛上看过很多帖子,但是可能还没弄清楚如何做到这一点。
我试图将行转换为列表然后对列表进行排序,然后最终将列表打印为新行。我在这种方法上并不成功,并开始认为我这样做很难,这就是为什么我现在要求别人帮忙。谢谢。
答案 0 :(得分:0)
阅读您的数据框 -
df = pd.read_csv('file.csv', sep=',\s*', engine='python')
df
Ingredient 1 Ingredient 2 Ingredient 3
0 pickles beef mayo
1 sugar flour eggs
致电np.sort
,将结果加载到Series
,然后致电.str.join
-
df['Summary'] = pd.Series(np.sort(df.values, axis=1).tolist()).str.join('; ')
df
0 beef; mayo; pickles
1 eggs; flour; sugar
dtype: object
使用to_csv
-
df.to_csv('file.csv')
答案 1 :(得分:0)
def sort_ingredients(row):
return ';'.join(row.sort_values().tolist())
df['Ingredient Summary'] = df.apply(sort_ingredients, axis=1)